T SQL 建立觸發器 禁止插入空值

2021-06-20 11:21:50 字數 807 閱讀 4285

---假設在sql server 2005裡面有一張表,其中有兩個字段需要做唯一性約束,

---不能有重複值,但是允許其為空值,如果都是空值,則允許重複

create trigger [dbo].[insert]

on [dbo].[table1]

instead of insert

as begin

declare @i int;

declare @errmsg char;

declare cursor1 cursor for

select count(*) num from inserted i, table1 t

where (i.col1=t.col1 and i.col2=t.col2 and i.col1 is not null and t.col1 is not null)

or (i.col1 is null and i.col2=t.col2)

or (i.col2 is null and i.col1=t.col1);

open cursor1;

fetch cursor1 into @i;

close cursor1;

if (@i=0)

insert into table1 select * from inserted;

else

begin

set @errmsg='存在重覆記錄,插入失敗';

raiserror(@errmsg,16,1);

rollback;

endend

T SQL 建立觸發器 禁止插入空值

假設在sql server 2005裡面有一張表,其中有兩個字段需要做唯一性約束,不能有重複值,但是允許其為空值,如果都是空值,則允許重複 create trigger dbo insert on dbo table1 instead of insert as begin declare i int...

T SQL語句建立觸發器

create trigger 觸發器名 on 表或檢視 for after instead of 操作時機 insert,update,delete assql語句 例1 要求 在order test表建立insert觸發器,當向order test表插入一行,如果cust test表中對應 記錄s...

理解T SQL 觸發器

觸發器是一種響應特定事件的特殊型別的儲存過程。有兩種型別的觸發器 資料定義語言 ddl 和資料操作語言 dml 觸發器。ddl能夠響應某種方式 create,alter,drop 修改資料庫結構時激發 dml是附加在特定表和檢視上的 程式不能顯式呼叫觸發器,觸發器 是某種事件產生後被自動執行。ddl...