日期:2014-05-17  浏览次数:20988 次

请问,这样设置级联操作,为什么报错?
ALTER TABLE 客户表
ADD PRIMARY KEY(客户编号)
on update cascade  
on delete cascade


添加客户表的主键,并设置级联操作,为什么报错呢?

------解决方案--------------------
你可以查一下联机丛书上的例子和注意事项嘛。
------解决方案--------------------
PRIMARY KEY?你1楼的是主键,3楼的是外键,

主键外键你要分清楚,找本基础的书看看吧。
------解决方案--------------------
主键和外键的差异很大的!
------解决方案--------------------
SQL code
on update cascade   
on delete cascade
  是定义在 从表上的非 主表。给你个案例
create table a   (id varchar(20) primary key,password varchar(20) not null)  
create table b   (id int identity(1,1) primary key, name varchar(50) not null, userId varchar(20), foreign key (userId) references a(id) on delete cascade )  
-- 表B创建了外码userId 对应A的主码ID,声明了级联删除   测试数据:   
insert a values ('11','aaa')   
insert a values('23','aaa')   
insert b values('da','11')   
insert b values('das','11')   
insert b values('ww','23')   
--删除A表内id为'11'的数据,发现B表内userId 为“11”也被数据库自动删除了,这就是级联删除   
delete a where id='11'

--drop table a
--drop table b

------解决方案--------------------
主键何来级联操作?只有外键才存在这个概念。
------解决方案--------------------
探讨

主键何来级联操作?只有外键才存在这个概念。

------解决方案--------------------


级联操作是针对外键吧
------解决方案--------------------
探讨

但是在订单明细表中,设置级联操作,就正常:

ALTER TABLE 订单明细表
ADD FOREIGN KEY(订单编号) REFERENCES 订单表(订单编号)
on update cascade
on delete cascade



什么原因?
http://msdn.microsoft.com/zh-cn/library/ms186973(v=sql.10……