你想要怎样修改呢?
你可以这样做:
首先删除name字段在另外一个表的外键
alter table b
drop constraint 外键约束的名字删除后,再修改表a的name字段
alter table a
你想要进行的修改语句
你可以这样做:
首先删除name字段在另外一个表的外键
alter table b
drop constraint 外键约束的名字删除后,再修改表a的name字段
alter table a
你想要进行的修改语句
on A
for update,delete
as
begin
if exists(select 1 from inserted)
update B set Name=(select Name from inserted) where Name=(select Name from deleted)
else
delete B where Name=(select Name from deleted)
end
go
FOR INSERT, UPDATE
AS
if update(intComId)
begin
update VehicleBasic
set VehicleBasic.intComId=inserted.intComId
from VehicleBasic,inserted
where VehicleBasic.intJyqId=inserted.intJyqId
and VehicleBasic.intblankout=0
end
在Oracle中不支持级联更新,那该如何实现呢?能否写触发器?
看看这个:ALTER TABLE tea ADD (CONSTRAINT tea_PK PRIMARY KEY(a)DEFERRABLE) ;
ALTER TABLE cup ADD (CONSTRAINT cup_FK FOREIGN KEY(a) REFERENCES tea(a)
ON DELETE CASCADE DEFERRABLE)
CREATE OR REPLACE TRIGGER id_trg AFTER UPDATE ON tea FOR EACH ROW
BEGIN //级联更新
UPDATE cup SET a=:NEW.a WHERE a=:OLD.a;
END;
在Oralce中的级联删除可以用触发器或级联2种方法实现,而级联更新只能用触发器实现,是吧?
呵呵,Oracle怎么的就不支持像SQL的级联更新呢?难道是怕死锁问题?
ALTER TABLE cup ADD (CONSTRAINT cup_FK FOREIGN KEY(a) REFERENCES tea(a)
ON DELETE CASCADE DEFERRABLE)
CREATE OR REPLACE TRIGGER id_trg AFTER UPDATE ON tea FOR EACH ROW
BEGIN //级联更新
UPDATE cup SET a=:NEW.a WHERE a=:OLD.a;
END;
对于这个我想问下,如果有几个表的外部关键字(或者不是外部关键字,仅仅就是简单的一个字段)都为cup表的id,是对每个关联的表都写个触发器?还是可以这样写:在ON tea 后面加,TableA,TableB ?的形式?