0
이전에 비슷한 질문을 게시했으나 응답 시간이 길어 보이지 않습니다! 미안하다 다시 게시해서는 안된다!SQL Server 트리거 도움말 - 동일한 테이블 업데이트
SQL Server 2008을 사용하고 있습니다. 인보이스 테이블이 있습니다.
create table INVOICE(
INVOICE_ID numeric(5) PRIMARY KEY IDENTITY,
INVOICE_STATUS varchar(25) not null,
TRADER_STATUS varchar (25))
삽입을 입력 할 때 트리거를 만들고 싶습니다. invoice_status = 'pending'- trader_status가 'open'으로 업데이트 (트리거)됩니다. 삽입이 입력되면; invoice_status = 'overdue'- trader_status가 'blocked'로 업데이트 (트리거)됩니다.
트리거 코드가 있습니다.
CREATE TRIGGER [dbo].[test] on [dbo].[invoice]
FOR INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON;
declare @invoice_status varchar(25)
select @invoice_status = (select invoice_status from inserted WHERE invoice_status = 'PENDING')
insert into invoice (trader_status) values ('OPEN')
select @invoice_status = (select invoice_status from inserted WHERE invoice_status = 'OVERDUE')
insert into invoice (trader_status) values ('BLOCKED')
END
GO
도움을 주시면 대단히 감사하겠습니다.
나는 처음 시작할 때만 INSERT 트리거를 만들 것입니다 ... – curtisk
'inserted '와'deleted'는 집합 연산의 결과를 나타낼 수 있도록 테이블입니다. 항상 하나의 행을 포함한다는 가정하에 트리거를 설계하는 것은 일반적으로 나쁜 계획입니다. 만약 당신이 절대적으로 확실하다면, 하나 이상의 행이 존재하지 않을 것입니다. 행 수에 대한 체크를 추가하고 나중에 받아 들일 수없는 명령문을 실행하려고 시도한 사람들에게 명시 적으로 'RaIsError'를 사용하십시오. ('(삽입 횟수를 선택하십시오.)> 1 RaIsError ('FooTable_Insert : log와 함께 하나 이상의 행을 처리 할 수 없습니다', 25, 42) – HABO