- 论坛徽章:
- 0
|
在ASE 12.5下,有两个表:titles和salesdetail,表结构如下:
CREATE TABLE titles
(
title_id char(6) NOT NULL,
title varchar(80) NOT NULL,
pub_id char(4) NULL
CONSTRAINT p_titles_id
primary key (title_id),
)
CREATE TABLE salesdetail
(
title_id char(6) NOT NULL,
qty smallint NOT NULL,
discount float NOT NULL
CONSTRAINT f_salesdetai_title
FOREIGN KEY (title_id)
REFERENCES titles (title_id)
)
我想在更新titles表的主键列title_id时,级联更新外键表salesdetail的title_id列值
现在表titles上创建一个update 触发器
create trigger cascade_atrig
on titles
for update sa
if update(title_id)
begin
update salesdetail
set title_id=inserted.title_id
from titles,deleted,inserted
where deleted.title_id=salesdetail.title_id
end
go
当更新titles表的title_id值时,
update titles set title_id='ps8888' where title_id='pc8888'
返回如下错误:
Dependent foreign key constraint violation in a referential integrity
constraint. dbname = 'pubs3', table name = 'salesdetail', constraint name = 'f_salesdetai_title'.
Command has been aborted.
这是sybase的官方资料上提供的例子。
请教各位
(1) 这个触发器本身是否有问题?
(2) 如果不是触发器的问题,那么是否不能通过这种方式来级联更新?
(3) 有何种有效的方法可以来更新主键同时级联更新外键表值?
多谢
 |
|