當前位置:首頁 » 編程語言 » sql觸發器if條件判斷

sql觸發器if條件判斷

發布時間: 2023-03-17 20:04:53

㈠ mssql觸發器 if

ALTERTRIGGER[dbo].[ICMO_update2]
ON[dbo].[ICMO]
afterupdate
AS
begin
declare@FCheckerID_pint,@FCheckerIDint
select@FCheckerID_p=t3.FCheckerID,@FCheckerID=t3.FCheckerID
fromICMOt1,insertedt2,ICMOt3
wheret1.FInterID=t2.FInterID
andt3.FParentInterID=t1.FInterID

if(@FCheckerID_pisnull)
if(@FCheckerIDisnotnull)
raiserror("請先處理子任務",18,1)withNOWAIT
else
updatet1setFCheckerID=1fromICMOt1,insertedt2
wheret1.FInterID=t2.FInterID
end

㈡ SQL觸發器可否判斷是什麼操作出發的

你在表上創建的觸發器的時候,會默認出現一條創建觸發器的語句模板的,上面就會列出是for update ,insert ,delete的。默認是所有操作都會觸發,如果你只需要update 的時候出發就把其他兩個關鍵字刪除掉就行了。

㈢ SQL語句中如何使用含有ifelse判斷語句

if else語句只有在存儲過程,觸發器之類的才有,今天突然在sql上當滿足某種條件上要取不同的欄位值,一開始直接網上查找相關資料,哇,sql上不支持!!!
不過可以使用case when語句解決,各種資料庫都支持。
語法:
case when 條件1 then 結果1 when 條件2 then 結果2 else 結果N end1

可以有任意多個條件,如果沒有默認的結果,最後的else也可以不寫,
select case when col1 > 1 then col2 else col3 end from XXXtable

㈣ sql 觸發器 if

不知道是 Oracle 還是 SQL Server

如果是 Oracle , 基本上是用 fei07100107 那種的用法

如果是 SQL Server

那麼需要定義幾個變數。

create trigger lev
on customer
for update
as
DECLARE
@NewIntegral INT;
BEGIN

-- 取得 本次 更新的 integral
-- 如果一條語句,更新很多條記錄的,這里要用游標處理。

SELECT @NewIntegral = integral FROM INSERTED

-- 如果這里不是更新全部表的,
-- 那麼麻煩上面再多定義一個 變數,
-- 從 INSERTED 裡面,取得 主鍵, 下面這里加 WHERE 條件。
if @NewIntegral>50 and @NewIntegral<200
begin
update customer
set lev=1
end

else if @NewIntegral>200 and @NewIntegral<500
begin
update customer
set lev=2
end

else @NewIntegral>500
begin
update customer
set lev=3
end
END

㈤ mssql 觸發器中使用判斷

if (object_id('tr_insert', 'TR') is not null)
drop trigger tr_insert
GO
CREATE TRIGGER tr_insert
ON user
FOR insert
AS
DECLARE @AID, @BID, @CID INT;
SELECT @AID=AID,@BID=BID FROM INSERTED
IF EXISTS(SELECT 1 FROM user WHERE AID = @BID)
BEGIN
SELECT @CID=CID FROM user(UPDLOCK) WHERE AID = @BID
INSERT INTO user VALUES(@AID,@BID,@CID);
END
GO

㈥ sql觸發器判斷指定列的數據滿足條件時刪除指定表,

tableA colA1 colA2
tableB

當 tableA 有新塵裂增、修改、派絕閉刪除時,觸發器執行以下
if colA1 滿足你宏悶的條件 ,then drop table tableB
觸發器執行結束

㈦ SQL 觸發器 判斷值的時候應該如何判斷

在觸發器中判斷哪些列被更改有以下兩種方法:
第一、可以使用Update()函數 ,語法:Update(列名);返回值:bool值。如果該列被更新則為True,否則為False。該函蔽宏數比較方便也比較實咐笑用。

第二、使用COLUMNS_UPDATED()函數。 語法:COLUMNS_UPDATED ( ) ;返回值:varbinary

1.八列以內的表。可以直接使用 COLUMNS_UPDATED()函數來判斷。比如:要測試一下第一列有沒有被修改,則可以用COLUMNS_UPDATED()& 1=1來判斷。 如果為True,則該列被更新;否則未被更新。衡並含要測試第五列,則可用 COLUMNS_UPDATED()& 16=16來判斷。

2.八列以上的表。要測試第一列被更新用 <!--[endif]-->substring(COLUMNS_UPDATED(),1,1) & 1=1,如果測試第11列,則用 <!--[endif]-->substring(COLUMNS_UPDATED(),2,1) & 4=4。以此類推。

㈧ MS SQL觸發器的問題,如何加條件判斷,如果條件不滿足,不執行插入操作,具體看注釋部分

用神輪ROLLBACK或者游或信RAISERROR,或者兩個一起用團帶。

create trigger JieShu
on 圖書借閱表
for insert
as
begin
declare @sh int
select @sh=書號 from inserted
if exists(select * from 圖書庫存表 where 書號=@sh)
delete 圖書庫存表 where 書號=@sh
else
BEGIN
RAISERROR ('您所借的書不存在!書號:%d', 16, 1, @sh)
ROLLBACK TRANSACTION
END
end

熱點內容
動態規劃01背包演算法 發布:2024-11-05 22:17:40 瀏覽:849
nasm編譯器如何安裝 發布:2024-11-05 22:01:13 瀏覽:178
登錄密碼在微信的哪裡 發布:2024-11-05 22:00:29 瀏覽:737
c防止反編譯工具 發布:2024-11-05 21:56:14 瀏覽:246
安卓虛擬機怎麼用 發布:2024-11-05 21:52:48 瀏覽:342
php時間搜索 發布:2024-11-05 20:58:36 瀏覽:478
燕山大學編譯原理期末考試題 發布:2024-11-05 20:13:54 瀏覽:527
華為電腦出現臨時伺服器 發布:2024-11-05 20:05:08 瀏覽:407
斗戰神免費挖礦腳本 發布:2024-11-05 19:53:25 瀏覽:664
網吧伺服器分別是什麼 發布:2024-11-05 19:45:32 瀏覽:391