sql觸發器if條件判斷
㈠ 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