当前位置:首页 » 编程语言 » 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 浏览:846
nasm编译器如何安装 发布:2024-11-05 22:01:13 浏览:176
登录密码在微信的哪里 发布:2024-11-05 22:00:29 浏览:735
c防止反编译工具 发布:2024-11-05 21:56:14 浏览:243
安卓虚拟机怎么用 发布:2024-11-05 21:52:48 浏览:340
php时间搜索 发布:2024-11-05 20:58:36 浏览:475
燕山大学编译原理期末考试题 发布:2024-11-05 20:13:54 浏览:524
华为电脑出现临时服务器 发布:2024-11-05 20:05:08 浏览:405
斗战神免费挖矿脚本 发布:2024-11-05 19:53:25 浏览:662
网吧服务器分别是什么 发布:2024-11-05 19:45:32 浏览:389