비교적 복잡한 작업을 수행하려면 저장 프로 시저에서 일반적으로 수행해야합니다. VIEW
을 사용하여 자동으로 만들 수 있습니까?보기의 정의 내부에 INSERT를 사용하십시오. CREATE VIEW AS INSERT INTO
내 특정 경우 :
I 출력이 테이블 = 입력 테이블은 A + 저장 프로 시저에서 일부 행 입력 테이블 B., 나는 테이블 A의 복사본을 만들 수 있습니다 원하는 다음 INSERT INTO
을하지만, 그렇지 않아 보기에서 허용됩니다.
간단한 예 :
입력 테이블 [test_album]
이고, 출력 = 입력 테이블 테이블 + 가수 프린스.
--create test data
IF OBJECT_ID('[dbo].[test_album]', 'U') IS NOT NULL
DROP TABLE [dbo].[test_album]
CREATE TABLE [test_album] (
id int not null identity(1, 1) primary key,
singer VARCHAR(50) NULL,
album_title VARCHAR(100) NULL
)
INSERT INTO [test_album] (singer, album_title)
VALUES ('Adale', '19'),
('Michael Jaskson', 'Thriller')
--this can be executed as sql code or in stored proc
SELECT *
INTO [result_table]
FROM [test_album]
INSERT INTO [result_table] ([singer])
VALUES ('Prince')
select *
from [result_table]
--id singer album_title
--1 Adale 19
--2 Michael Jaskson Thriller
--3 Prince NULL
----as expected
그러나 내가보기 안에이 INSERT INTO
할 수 있습니다.
실생활 경우 :
추가 가수 테이블 [extra_singers]에
[test_album] 다른 많은 열을 가질 수있다 (또는 스키마가 변경 될 수 있습니다) 그래서 모든 열을 입력하지 이상적 코드의 이름.
--create test data
IF OBJECT_ID('[dbo].[test_album]', 'U') IS NOT NULL
DROP TABLE [dbo].[test_album]
IF OBJECT_ID('[dbo].[extra_singers]', 'U') IS NOT NULL
DROP TABLE [dbo].[extra_singers]
IF OBJECT_ID('[dbo].[result_table]', 'U') IS NOT NULL
DROP TABLE [dbo].[result_table]
CREATE TABLE [test_album] (
id int not null identity(1, 1) primary key,
singer VARCHAR(50) NULL,
album_title VARCHAR(100) NULL,
many_other_columns VARCHAR(100) NULL
)
INSERT INTO [test_album] (singer, album_title)
VALUES ('Adale', '19'),
('Michael Jaskson', 'Thriller')
CREATE TABLE [extra_singers] (
[id] int not null identity(1, 1) primary key,
[name] VARCHAR(50) NULL)
INSERT INTO [extra_singers] ([name])
VALUES ('Prince'),
('Taylor Swift')
--append [extra_singers] to [test_album]
--this can be executed as sql code or in stored proc
SELECT *
INTO [result_table]
FROM [test_album]
INSERT INTO [result_table] ([singer])
SELECT [name]
FROM [extra_singers]
대체 방법이 있습니까? 어떤 도움을 주신다면 자동을
create view test_view as
select *
from [test_album]
union all
select 3 as id,
'Prince' as singer,
NULL as album_title
하지만 당신은 [test_album]
의 모든 열 이름을 알아야 당신은 열 [ID]를 할 수 없습니다 : 내가 생각할 수있는
부분적인 해결책 U- 감사 -increment
이것은 의미가 없습니다. 당신은 명확히 할 수 있습니까? – SqlZim
뷰는 기본 데이터를 표시하기위한 것입니다. 삽입은 실제로 그렇게 적합하지 않습니다. 저장 프로시 저는 데이터를 직접 삽입하지 않으려는 경우 수행하려는 작업에 더 적합합니다. – indiri
@SqlZim 테이블을 사용할 때마다 테이블에 행을 추가해야합니다. VIEW를 사용하여 자동화하려고합니다. 그래서보기는 = 입력 테이블 + 하나의 여분의 행을해야합니다 –