方法很多!但是说明!我感到你考虑的不是很完善!例如如果你更新了数据!是不是也要更新那些数据那!
sql server 下/*但是你的这两个自字段之间不能要外间约束,因为sql server好像不能级联删除你可以把sql server的自动提交改了也许可以但是我没有试验过*/
create trigger kkk on tablename1
for update,delete
as
begin
if (select count(*) from inserted)<=0 then
/*说明你进行的是删除操作不是更新操作*/
begin
delete tablename2 from tablename2,deleted where tablename2.iid=deleted.iid
end
else
begin
/*说明进行的是更新操作,如果你把iid 字段的值101换成了100,你要把tablename2表里的原来是101的换成100*/
update tablename2
set tablename2.iid=inserted.iid
from deleted,inserted
where tablename2.iid=deleted.iid
end
end
oracle 下
create trigger kkk
befor delete or update on tablename
for each row
begin
if (:new.iid is null) then
/*说明你进行的是删除操作不是更新操作*/
delete from tablename2 where tablename2.iid=:old.iid;
else
/*说明进行的是更新操作,如果你把iid 字段的值101换成了100,你要把tablename2表里的原来是101的换成100*/
update tablename2
set iid=:new.iid,
where :old.iid=tablename2.iid;
end if;
end;
我的说玩了!
不知道对你有没有帮助!
sql server 下/*但是你的这两个自字段之间不能要外间约束,因为sql server好像不能级联删除你可以把sql server的自动提交改了也许可以但是我没有试验过*/
create trigger kkk on tablename1
for update,delete
as
begin
if (select count(*) from inserted)<=0 then
/*说明你进行的是删除操作不是更新操作*/
begin
delete tablename2 from tablename2,deleted where tablename2.iid=deleted.iid
end
else
begin
/*说明进行的是更新操作,如果你把iid 字段的值101换成了100,你要把tablename2表里的原来是101的换成100*/
update tablename2
set tablename2.iid=inserted.iid
from deleted,inserted
where tablename2.iid=deleted.iid
end
end
oracle 下
create trigger kkk
befor delete or update on tablename
for each row
begin
if (:new.iid is null) then
/*说明你进行的是删除操作不是更新操作*/
delete from tablename2 where tablename2.iid=:old.iid;
else
/*说明进行的是更新操作,如果你把iid 字段的值101换成了100,你要把tablename2表里的原来是101的换成100*/
update tablename2
set iid=:new.iid,
where :old.iid=tablename2.iid;
end if;
end;
我的说玩了!
不知道对你有没有帮助!
解决方案 »
- 重新发布关于未能解决的排序的SQL,求解。
- 求一字符串截取sql语句,在线等。
- 在xp sp2系统下要用sql server 2005数据挖掘,请问应该安装什么版本的sql server 2005?
- 问一个简单排序
- 怎么设置让日志达到一定大小后自动删除,用SQL语言及面版两种情况怎么设置?
- 关于LEFT JOIN 的问题! SQL TimeOut!
- 怎样使查询的结果区分大小写
- 求助:查询一个用逗号分隔字段的sql语句
- 请问sql server2000 支持中文吗?
- 奇怪,零條記錄仍占用5G空間,而且是在使用狀態,無法用收縮去解決.
- 急!急!急!两个重要问题,请各位高手帮忙。我会给出高分的。谢谢了!!!!
- 请问SQL Server中用exec sp_xxx 时如何取返回值?
2,在oracle里,只要在有外键的表上加一个属性就可以。用不着触发器。
我的关键字userid只允许删除,不允许修改,所以不用考虑得很多。对如何使用触发器来做,我现在清楚了。另外上面各位众说不一,触发器不好吗?除了触发器外是否还有其它方法?