-- 插入時執行觸發器
set ansi_nulls on
set quoted_identifier on
gocreate trigger [dbo].[rscopeninsert]
on [dbo].[rsc_info]
for insert
asdeclare
@v_rscid varchar(50),
@v_status int
begin
select @v_rscid=rscid,@v_status=status from inserted;
--取得當前資源資訊status>4 才插入資訊
if @v_status > 4
begin
insert into rsc_open_synchronous(rscid,opstatus,opdatetime) values (@v_rscid,'insert',getdate())
endend
--- 更新時執行觸發器
set ansi_nulls on
set quoted_identifier on
gocreate trigger [dbo].[rscopenupdate]
on [dbo].[rsc_info]
for update
asdeclare
@v_rscid varchar(50),
@v_status int
begin
select @v_rscid=rscid,@v_status=status from inserted;
--取得當前資源資訊status>4 才更新資訊
if @v_status > 4
begin
update rsc_open_synchronous set opstatus = 'update', opdatetime = getdate() where rscid=@v_rscid
endend
sqlserver中的「set ansi_nulls on」和「set quoted_identifier on」有什麼實際的用處?
這些是 sql-92 設定語句,使 sql server 2000/2005 遵從 sql-92 規則。
當 set quoted_identifier 為 on 時,識別符號可以由雙引號分隔,而文字必須由單引號分隔。當 set quoted_identifier 為 off 時,識別符號不可加引號,且必須符合所有 transact-sql 識別符號規則。
sql-92 標準要求在對空值進行等於 (=) 或不等於 (<>) 比較時取值為 false。當 set ansi_nulls 為 on 時,即使 column_name 中包含空值,使用 where column_name = null 的 select 語句仍返回零行。即使 column_name 中包含非空值,使用 where column_name <> null 的 select 語句仍會返回零行。
當 set ansi_nulls 為 off 時,等於 (=) 和不等於 (<>) 比較運算子不遵從 sql-92 標準。使用 where column_name = null 的 select 語句返回 column_name 中包含空值的行。使用 where column_name <> null 的 select 語句返回列中包含非空值的行。此外,使用 where column_name <> xyz_value 的 select 語句返回所有不為 xyz_value 也不為 null 的行。
sql server中觸發器
觸發器是一種特殊型別的儲存過程,它不同於之前的我們介紹的儲存過程。觸發器主要是通過事件進行觸發被自動呼叫執行的。而儲存過程可以通過儲存過程的名稱被呼叫。什麼是觸發器 觸發器對錶進行插入 更新 刪除的時候會自動執行的特殊儲存過程。觸發器一般用在check約束更加複雜的約束上面。觸發器和普通的儲存過程的...
SQL Server中的觸發器
去年接觸觸發器的時候一頭霧水,現在也算有了個大概的了解。就像的自考一樣,學習真的是乙個需要反覆的過程,從陌生到熟悉這是乙個過程。一 基本概念 觸發器是一種特殊型別的儲存過程,它不同於普通的儲存過程。觸發器主要是通過事件進行觸發而被執行的,而儲存過程可以通過儲存過程名稱而被直接呼叫。當往某乙個 中插入...
SQLSERVER的觸發器
觸發器的定義 觸發器是一種特殊型別的儲存過程,他不同於前面介紹過的一般的儲存過程 在sql內部把觸發器看做是儲存過程但是不能傳遞引數 一般的儲存過程通過儲存過程名稱被直接呼叫,而觸發器主要是通過事件進行觸發而被執行.總的來說,觸發器是一種功能強大的工具,在表中資料發生變化時自動強制執行,觸發器還可以...