问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

SQL SERVER 触发器中的新旧值 (ORACLE 中的:old :new 转换)

发布网友 发布时间:2022-04-08 20:43

我来回答

2个回答

热心网友 时间:2022-04-08 22:12

楼主啥数据库?
Oracle 和 SQL Server 处理机制不一样的。

Oracle

通过
OF 字段 ON 表
实现只针对特定列的触发。

FOR EACH ROW 表示这个触发器为 行级触发器。

测试表:
SQL> CREATE TABLE test_trigger_table (
2 id INT,
3 name VARCHAR(10),
4 val INT
5 );

Table created.

SQL> CREATE OR REPLACE TRIGGER BeforeUpdateTest
2 BEFORE INSERT OR UPDATE OF val ON test_trigger_table
3 FOR EACH ROW
4 BEGIN
5 dbms_output.put_line('BEFORE UPDATE val ON test_trigger_table ');
6 dbms_output.put_line('Old val = ' || :old.val);
7 dbms_output.put_line('New val = ' || :new.val);
8 END;
9 /

Trigger created.

SQL>
SQL> INSERT INTO test_trigger_table(id, name, val) VALUES (1, 'ABC', 1);
BEFORE UPDATE val ON test_trigger_table
Old val =
New val = 1

1 row created.

SQL>
SQL> UPDATE test_trigger_table SET name = 'XYZ' WHERE id=1;

1 row updated.

SQL>
SQL> UPDATE test_trigger_table SET val = 20 WHERE id=1;
BEFORE UPDATE val ON test_trigger_table
Old val = 1
New val = 20

1 row updated.

-----------------------------
假如有一个日志记录表 叫 test_trigger_log
有6个字段。
分别存储 更新前 与 更新后:

所有字段更新都触发

CREATE OR REPLACE TRIGGER BeforeUpdateTest
BEFORE UPDATE ON test_trigger_table
FOR EACH ROW
BEGIN

INSERT INTO test_trigger_log (oldid, oldname, oldval, newid, newname, newval)
VALUES(:old.id, :old.name, :old.val, :new.id, :new.name, :new.val);

END;

热心网友 时间:2022-04-08 23:30

create or replace trigger a5_buydate
before update on prline for each row
begin
if :old.prlineid <> :new.prlineid then
:new.buyer_date:= sysdate;
end if;
end;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
求大学生谈恋爱的各种弊端 大学生恋爱的利大于弊吗? 大学生谈恋爱的弊处 dnf现在站街16000的物攻 增加100物攻能张多少 家里养的蚕宝宝是要蜕皮了吗 富贵包硬和软的区别 【已完成】为什么腋窝突然有异味? 女生为什么有狐臭症状? 为什么会狐臭 万视宝这个牌子是做什么的?有人了解嘛? 白薯的口感? 山东泰山国际青年旅舍的介绍 老师建立了家长群,并说添加子女名字和父母的信息及健康发言,作为家长刚进群要怎么打招呼好? 进对象家人群第一句说什么? 和姐妹吵架又进家人群怎么打招呼 对象把我拉到他们自己的亲戚群里,我不知道怎么打招呼 使用微信分身原来的登不上去了,怎么办? 进入一个好久不见的亲人群怎么打招呼? 为什么微信分身后的原微信登录不了? 腾讯Q币充值中心Q币充值后怎么退回提现 使用微信分身原来的登不上去了,怎么办? 微信分身登录不了了? 腾讯q币充值中心充值后能退回来吗 把钱充值成Q币了,怎么退出来 我在长沙银行自动存款机存钱的时候,机器出现故障说业务取消但钱又没有退给我,不知道具体的金额,怎么办 腾讯充值Q币钱怎么退 冲了Q币怎么取消 Q币充值没有成功,钱挂账了怎么退, watchdog2以离线模式开启后电脑关机 UPLAY要一直联机状态吗 红薯和香芋的味道是一样的吗? 华为nova6se可以玩堡垒之夜吗? 什么品种的地瓜味道是南瓜味? 为什么超市里里买的地瓜。一点不甜?老家种的就非常甜 哔卡哔卡的广告都是些什么来的?点击广告会收费吗?(会向点击的人收费吗?),我的好像点了主页和分类的 如果火锅只能吃三样菜,你吃哪三样? 有没有污点的女孩 可换照片的。 一个男生为一个女生哭了,代表着什么? 一个男生为一个女生流泪代表什么?可以表现出什么? 男生为女生哭证明了什么 一个男生为女生哭代表什么 想问一下麻辣空间火锅的菜品量怎么样?6个人去吃大概需要点几个菜? 兔儿狗头鸡翅身马脚是什么 一个男人在女人面前哭代表什么意思 火锅是川渝两地享誉全国的特色美食,可是为什么在众多食客的心目中,重庆火锅的地位要比成都火锅更美味? 直线步进电机的应用领域 男生为女生哭代表什么 吃火锅时你最离不开哪三样食物? 狗胆第一天下知,兔儿温顺数第一? 我设置了禁止加好友权限隐私别人加我我还能显示吗?