簡體   English   中英

sql server 觸發器幫助 - 相同的表更新

[英]sql server trigger help - same table update

我之前發布了一個類似的問題 - 但似乎無法得到足夠長的回復! 對不起,如果我不應該再次發帖!

這是使用 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

任何幫助是極大的贊賞!

create trigger [dbo].[test] on [dbo].[invoice]
for insert
as
begin

update Invoice
  set Trader_Status = 'OPEN'
  where Invoice_Id in ( select Invoice_Id from inserted where Invoice_Status = 'PENDING' )

update Invoice
  set Trader_Status = 'BLOCKED'
  where Invoice_Id in ( select Invoice_Id from inserted where Invoice_Status = 'OVERDUE' )

end

請注意,這將處理單個語句插入的多行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM