触发器改变或者取消INSERT, UPDATE以及DELETE语句
怎么用触发器改变或者取消INSERT,UPDATE以及DELETE语句给我个详细代码我的数据库是MySql...
怎么用触发器改变或者取消INSERT, UPDATE以及DELETE语句
给我个详细代码
我的数据库是MySql 展开
给我个详细代码
我的数据库是MySql 展开
1个回答
展开全部
不知道你什么数据库.
如果是 Oracle 数据库的话。
如果要 改变 INSERT, UPDATE
那么用 BEFORE FOR EACH ROW 的触发器。
通过在触发器里面, 修改 :new 中的数据, 实现 更改 INSERT UPDATE 的数据。
举个例子来说,就是 插入的时候,数据是1的, 你触发器把1修改成2,最后写到数据库中,结果是2。
DELETE 触发器没法 改变, 因为数据是删除的。
至于要 取消INSERT, UPDATE以及DELETE语句
只需要在触发器中, 抛出异常, 就会自动导致事务回滚,从而取消操作。
例如在 INSERT, UPDATE以及DELETE 的触发器中,只有这么一行
-- 错误代码允许的范围是 -20,000~20,999
RAISE_APPLICATION_ERROR(-20000, '触发器取消了操作!');
那么最后对这个表的所有的 INSERT, UPDATE以及DELETE 操作,都直接因为出错,而无法更新数据库表了。
如果是 Oracle 数据库的话。
如果要 改变 INSERT, UPDATE
那么用 BEFORE FOR EACH ROW 的触发器。
通过在触发器里面, 修改 :new 中的数据, 实现 更改 INSERT UPDATE 的数据。
举个例子来说,就是 插入的时候,数据是1的, 你触发器把1修改成2,最后写到数据库中,结果是2。
DELETE 触发器没法 改变, 因为数据是删除的。
至于要 取消INSERT, UPDATE以及DELETE语句
只需要在触发器中, 抛出异常, 就会自动导致事务回滚,从而取消操作。
例如在 INSERT, UPDATE以及DELETE 的触发器中,只有这么一行
-- 错误代码允许的范围是 -20,000~20,999
RAISE_APPLICATION_ERROR(-20000, '触发器取消了操作!');
那么最后对这个表的所有的 INSERT, UPDATE以及DELETE 操作,都直接因为出错,而无法更新数据库表了。
参考资料: http://hi.baidu.com/wangzhiqing999/blog/item/2348e20a399e1dc47bcbe18f.html
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询