本周我遇到了一个问题(谢天谢地,我已经以更好的方式解决了);
- 我需要在数据库中保持几个字段不变。
因此,我编写了一个脚本以在表上放置一个触发器,当插入或更新发生时,它将将该值设置回预设数字。
该数据库是在 VMS 上运行的 RDB(但我很想知道 SQLServer 的相似之处)。
以下是触发器:
drop trigger my_ins_trig;
drop trigger my_upd_trig;
!
!++ Create triggers on MY_TABLE
CREATE TRIGGER my_ins_trig AFTER INSERT ON my_table
WHEN somefield = 2
(UPDATE my_table table1
SET table1.field1 = 0.1,
table1.field2 = 1.2
WHERE my_table.dbkey = table1.dbkey)
FOR EACH ROW;
CREATE TRIGGER my_upd_trig AFTER UPDATE ON my_table
WHEN somefield = 2
(UPDATE my_table table1
SET table1.field1 = 0.1,
table1.field2 = 1.2
WHERE my_table.dbkey = table1.dbkey)
FOR EACH ROW;
提问时间
我希望这会形成无限递归 - 但它似乎没有?谁能向我解释 RDB 如何以这种或另一种方式处理......或其他数据库如何处理它。
[注意:我知道这是一种糟糕的方法,但各种问题和复杂性意味着即使这在代码中很简单 - 它也不能以最好/最简单的方式完成。谢天谢地,我没有以这种方式实现它,但我想询问 SO 社区对此的看法。]
提前致谢