sql – 当更新另一个表中的列时,创建一个更新一个表上的列的触发器
发布时间:2020-05-25 17:05:38 所属栏目:MsSql 来源:互联网
导读:我有两张桌子 订单(id,date,note) 和 交货(Id,Note,Date) 当订单更新日期时,我想创建一个更新交货日期的触发器. 我在想这样做 CREATE OR REPLACE TRIGGER your_trigger_nameBEFORE UPDATEON OrderDECLAREBEGIN UPDATE Delivery set date = ??? where id
|
我有两张桌子 订单(id,date,note) 和 交货(Id,Note,Date) 当订单更新日期时,我想创建一个更新交货日期的触发器. 我在想这样做 CREATE OR REPLACE TRIGGER your_trigger_name BEFORE UPDATE ON Order DECLARE BEGIN UPDATE Delivery set date = ??? where id = ??? END; 如何获取日期和行ID? 谢谢 解决方法
假设这些是您的ORDER表上称为DELIVERY_DATE和ID的列,您的触发器应该如下所示: CREATE OR REPLACE TRIGGER your_trigger_name
BEFORE UPDATE ON Order
FOR EACH ROW
BEGIN
if :new.delivery_date != :old.delivery_date
then
UPDATE Delivery d
set d.delivery_date = :new.delivery_date
where d.order_id = :new.id;
end if;
END;
注意FOR EACH ROW子句:必须引用单独行的值.我使用了一个IF结构来测试是否在交货时执行UPDATE.如果您的触发器中没有其他逻辑,您可以这样写: CREATE OR REPLACE TRIGGER your_trigger_name
BEFORE UPDATE OF delivery_date ON Order
FOR EACH ROW
BEGIN
UPDATE Delivery d
set d.delivery_date = :new.delivery_date
where d.order_id = :new.id;
END;
我已经回答了你问过的问题,但是,我将指出,你的数据模型是次优的.正确的规范化设计只能在一个表上保持DELIVERY_DATE:DELIVERY似乎是合适的位置. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- SQL Server 通过osql/ocmd批处理批量执行sql文件示例
- sql-server-2008 – 如何在sql server中的波斯语中转换date
- 在MSSQL Server中将nvarchar转换为数字
- sql-server – 在不生成新快照的情况下将文章添加到事务发布
- sql – 具有Desc / Asc排序的Order By子句的Case语句
- sql-server – 是否从SQL Server 2016安装媒体中删除了Mana
- sql – 查找名称以某个后缀结尾的所有表
- SQL查询与distinct和sum
- SQL Server SQL查询入门功能实例
- sqlserver多版本查看版本号
