请教如何通过触发器来实现逻辑删除 主键是用序列自增长的,如果先insert再update,那么主键会跳号,如何设计才比较好? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 查了下资料,好像可以用instead of我试试。为啥每次我发帖都没人回呢…… 无法在表中创建instead of …… 简单得说,一张表,里面有个DR字段,新增数据dr均为0.当用户删除数据的时候,数据不直接删除,而是把dr改为1.这张表的主键是用序列自增长的,所以在before delete前新增一条原记录并将dr改成1的话,主键会变动。如果新增完后再修改主键,那么下一条新增的记录,主键会跳号(即主键不连续)。如何解决? 我也知道最好就是前台删除的时候直接update dr...可万事总有不如意的地方:有些表是有dr的,有些表是没有的……主键同上,有些表的主键无所谓,有些表必须要连号,涉及特殊需求 三步:假设你的表为A1、把你的表改名为A_12、建议个view 名称为A create or replace A as select * from A_1; 这样,所有对原表的操作都必须经过视图A来做了,因为视图A与原表同名,并且视图为“单一”视图 所以 系统原来对表A的逻辑处理都不需要进行改动3、在视图A上建立 delete instead of 视图,捕捉删除操作,instead of为update dr=1的操作。 oracle里面只能在视图上创建instead of 触发器 oracle有2个问题. oracle 如何查询所有的,自定义角色 求一查询语句 十万火急!!Sqlserver2005存储过程转换成Oracles存储过程的问题。 学数据库 求sql寫法 pl/sql developer在哪里可以导出table script? 在Oracle中 用varchar2做主键或索引对系统性能有无不良影响? 超级简单问题! 急问概念性问题~~ 如何保持where in查询后的顺序 一道查询语句
我试试。
为啥每次我发帖都没人回呢……
当用户删除数据的时候,数据不直接删除,而是把dr改为1.
这张表的主键是用序列自增长的,所以在before delete前新增一条原记录并将dr改成1的话,主键会变动。
如果新增完后再修改主键,那么下一条新增的记录,主键会跳号(即主键不连续)。
如何解决?
可万事总有不如意的地方:有些表是有dr的,有些表是没有的……
主键同上,有些表的主键无所谓,有些表必须要连号,涉及特殊需求
假设你的表为A
1、把你的表改名为A_1
2、建议个view 名称为A
create or replace A as select * from A_1;
这样,所有对原表的操作都必须经过视图A来做了,因为视图A与原表同名,并且视图为“单一”视图
所以 系统原来对表A的逻辑处理都不需要进行改动
3、在视图A上建立 delete instead of 视图,捕捉删除操作,instead of为update dr=1的操作。