Primary key 和Foreign key的问题.

rocky_chencn 2003-08-25 09:19:28
当在两个table之间建立relationships后,是不是无法update Primary key 或Foreign key 的值.有无办法同时update 两边数据.
...全文
116 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
CrazyFor 2003-08-25
  • 打赏
  • 举报
回复
参考:

ALTER TABLE 表 ADD
CONSTRAINT 外键名 FOREIGN KEY
(
字段名
) REFERENCES 主键表 (
字段名
) ON DELETE CASCADE ON UPDATE CASCADE


最简单的办法就是建关系图,选中级联更新,级联删除.
zarge 2003-08-25
  • 打赏
  • 举报
回复
级联引用完整性约束
新增信息 - 2001 年 9 月

当用户试图删除或更新外键所指向的键时,级联引用完整性约束使您得以定义 Microsoft® SQL Server™ 2000 所采取的操作。

CREATE TABLE 和 ALTER TABLE 语句的 REFERENCES 子句支持 ON DELETE 和 ON UPDATE 子句:

[ ON DELETE { CASCADE | NO ACTION } ]


[ ON UPDATE { CASCADE | NO ACTION } ]
如果没有指定 ON DELETE 或 ON UPDATE,则默认为 NO ACTION。NO ACTION 指定的行为与 SQL Server 的早期版本中发生的行为相同。

ON DELETE NO ACTION

指定如果试图删除某行,而该行含有由其它表的现有行中的外键所引用的键,则产生错误并回滚 DELETE。

ON UPDATE NO ACTION

指定如果试图更新某行中的键值,而该行含有由其它表的现有行中的外键所引用的键,则产生错误并回滚 UPDATE。

CASCADE 允许在表间级联键值的删除或更新操作,这些表的外键关系可追溯到执行修改的表。不能为任何具有 timestamp 列的外键和主键指定 CASCADE。

ON DELETE CASCADE

指定如果试图删除某行,而该行含有由其它表的现有行中的外键所引用的键,则也将删除所有包含那些外键的行。如果在目标表上也定义了级联引用操作,则对从那些表中删除的行同样采取指定的级联操作。

ON UPDATE CASCADE

指定如果试图更新某行中的键值,而该行的键值由其它表的现有行中的外键所引用,则所有外键值也将更新成为该键指定的新值。如果在目标表上也定义了级联引用操作,则对在那些表中更新的键值同样采取指定的级联操作。
pengdali 2003-08-25
  • 打赏
  • 举报
回复
连级更新
alter table mylocation
drop constraint fk_mylocation_myname
alter table mylocation
add constraint fk_mylocation_myname foreign key(myname)references myname(name)
on update cascade on delete cascade
liuyun2003 2003-08-25
  • 打赏
  • 举报
回复
如果你想UPDATE primary key的值必须保证没有任何foreign key和它关联,否则是无法进行相应操作的。同理你更新FOREIGN KEY的时候,也必须保证它可以和一个PRIMARY KEY对应上。可以通过建立触发器来处理两边同时UPDATE的问题。
amtyuranus 2003-08-25
  • 打赏
  • 举报
回复
写一个触发器

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧