当前位置:首页 » 编程语言 » sql触发器的if语句

sql触发器的if语句

发布时间: 2022-09-20 06:21:12

1. 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

2. 在Sql Server trigger中使用if条件句总报错

看样子是mssql,我觉得你的as下第一行的if语句不太对啊,orders. orderkey = inserted. orderkey是什么意思,orders. orderkey应该是一个表的字段值,不得用select语句来判断吗?比如
If exists( select * from orders where orderkey = inserted. orderkey)
.....

3. SQL Server触发器问题,语句有问题

你以前一直用Oracle数据库吧,SQL Server的触发器和Oracle的差别还是比较大的,MSsql中没有:new.…或:old.…的用法,inserted指的是更新或插入的数据,deleted指的是被修改或删除的数据。MSsql中的IF语句不是“IF THEN END IF”而是“IF begin end”的模式。并且各句末尾不需要加分号。
CREATE TRIGGER Insert_SC ON SC
FOR INSERT
declare @oldcno 类型,@newcno 类型,@newsnum 类型,@oldsnum 类型;
AS
BEGIN
select @oldcno=Cno from deleted
select @newcno=Cno from inserted
select @oldsnum=Snumber from deleted
IF (@oldcno= @newcno)
begin
@newsnum= @oldsnum+ 1;
update SC set Snumber =@newsnum where 唯一标识你正在操作的行;
end
END;
以上写的这个并不能直接供你使用,你还需要琢磨下修改后才能使用。

4. SQL IF 语句

来晚了~
关于判断语句看数据库吧
SQL server 支持的查询语句命令case when:
结构如下:
case
when 条件1 then 结果1
when 条件2 then 结果2
……
end
在access中,不支持case when 结构,使用 iif 代替:
结构如下:
IIF(条件,结果1,结果2)
解释:当条件成立,取结果1;当条件不成立,取结果2
IIF(TypeID=-1,'一般客人',(select ClubType.Name from ClubType where CustomerInfo.TypeID =ClubType.ID)) as TypeName

5. SQL 触发器语句

create trigger checkRoysched
on roysched
INSTEAD OF INSERT --改成这个,这是在Insert之前的触发。
as
if ((select title_id from roysched) is null) or
((select royalty from roysched) is null)
begin
print 'royalty,titlt_id字段不能为空'
rollback transaction
end
go

6. 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

7. sqlserver触发器添加条件if语句后不起作用,求解

select @t1=Not_Withdraw_Total from tbUserInfo

看看你这个@t1的具体值,应该是最后一条记录的值
这个值是否大于等于插入记录的Price*Rest_Num

8. mssql怎样在触发器中写if语句

if exists (select * 表2 where name=(select sl from inserted))
update 表2 set name=(select sl from inserted) where name=(select sl from inserted)
else
insert into ...

9. 关于sql触发器中的if和else

你用的是sql2000吗?
在sql2000里if 和else 之间必须有语句,没有语句是错误语法,你嵌套了很多层是不是有的里面没有写东西啊
例如

10. SQL触发器语句

呵呵,看到你的这个问题了,回答一下,希望能给你增加印象。

由于SqlServer 没有oracle中的行级触发器的概念,触发器如下:

create trigger [TC2]
on [dbo].[teacher]
for insert,update
as if (select salary from inserted)<3000
update teacher set salary=3000 and tid= (select tid from inserted)

说明:当你插入数据的时候,这条数据是存放在【inserted】表中的,在这个表中把【teacher】表的主键得到(假如是【tid】)然后把这个主键信息加到where 条件上,这样就能起到只更新插入的那一条数据的效果了,否则会出现更新了全表的问题。

---
以上,希望对你有所帮助。

热点内容
枪战王者如何用账号密码登录 发布:2025-01-11 10:30:56 浏览:936
mysql在linux下安装 发布:2025-01-11 10:30:49 浏览:843
数据库copy 发布:2025-01-11 10:26:06 浏览:533
unity清理缓存 发布:2025-01-11 10:25:23 浏览:466
优酷视频双击上传 发布:2025-01-11 10:24:41 浏览:963
存储脐带胎儿干细胞 发布:2025-01-11 10:18:36 浏览:330
实简ftp软件怎么改服务器文件 发布:2025-01-11 10:09:39 浏览:555
qb充值源码 发布:2025-01-11 10:00:21 浏览:27
c语言元编程 发布:2025-01-11 09:53:02 浏览:343
线切割割圆怎么编程 发布:2025-01-11 09:52:23 浏览:172