SQL Server2000级联删除的问题列举

数据库 SQL Server
我们今天主要向大家描述的是SQL Server2000级联删除的某些问题,如果你对其相关的实际操作有兴趣的话,你就可以对以下的文章点击观看了。

此文章主要向大家探讨的是SQL Server2000级联删除的某些问题,如果你对这SQL Server2000级联删除技术,心存好奇的话,以下的文章将会揭开它的神秘面纱,下面就是文章的具体介绍,望你浏览完以下的内容会有所收获。

 

1.建立四个表:

 

  1. create table client(   
  2. c_id int identity(1,1),   
  3. c_name nvarchar(255) unique,   
  4. c_pass nvarchar(255),   
  5. c_sex bit,   
  6. c_mail varchar(255),   
  7. c_qq varchar(255),   
  8. primary key(c_id)   
  9. );   
  10. create table album_kind(   
  11. k_id int identity(1,1),   
  12. k_name nvarchar(255),   
  13. k_desc nvarchar(255),   
  14. primary key(k_id)   
  15. );   
  16. create table album(   
  17. a_id int identity(1,1),   
  18. a_name nvarchar(255),   
  19. a_desc nvarchar(255),   
  20. a_create_date datetime,   
  21. a_times bigint,   
  22. c_id int,   
  23. k_id int,   
  24. primary key(a_id),   
  25. foreign key(c_id) references client(c_id) on delete cascade,   
  26. foreign key(k_id) references album_kind(k_id) on delete cascade   
  27. );   
  28. create table album_word(   
  29. aw_id int identity(1,1),   
  30. aw_title nvarchar(255),   
  31. aw_content nvarchar(500),   
  32. commit_date datetime,   
  33. a_id int,   
  34. c_id int,   
  35. primary key(aw_id),   
  36. foreign key(a_id) references album(a_id) on delete cascade,   
  37. foreign key(c_id) references client(c_id) on delete cascade   
  38. );   

这时(创建第四个表的时候)SQL Server2000级联删除会报告错误:

将 FOREIGN KEY 约束 'FK_album_word_album' 引入表 'album_word' 中将导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 约束。[Microsoft][ODBC SQL Server Driver][SQL Server]未能创建约束。请参阅前面的错误信息。

 

2.这时候我们去掉第四个表中的级联删除:

"on delete cascade"

 

再次执行。。。。通过

 

3.创建一个触发器可以解决这个问题(接以上1.2步):

  1. CREATE TRIGGER album_word_client ON client   
  2. FOR INSERT, UPDATE, DELETE   
  3. AS   
  4. delete album_word from album_word join deleted on album_word.c_id = deleted.c_id  

完成!

语法:

create trigger 随便一个名称(比如b_a) on 表a

 

  1. for delete   
  2. as  

delete 表b from 表b join deleted on 表b.a表外键=deleted.a表主键

 

(当删除a中某条记录,b中相关联记录也会相应删除)

 

以上的相关内容就是对SQL Server2000级联删除的一些问题的介绍,望你能有所收获。

【编辑推荐】

  1. SQL Server拆分字符串的3常用种方法
  2. SQL Server 2005快照与查询的使用场景
  3. 破解SQL Server占内存过多很简单!
  4. SQL Server数据库Processor Affinity概述
  5. SQL Server崩溃的恢复步骤
责任编辑:佚名 来源: 每日经济新闻
相关推荐

2010-07-01 17:08:26

2010-11-10 11:47:35

SQL Server级

2010-07-16 10:56:04

SQL Server2

2010-07-02 14:20:30

SQL Server2

2010-07-12 14:37:28

SQL Server2

2010-09-02 17:44:30

SQL server安装

2010-06-18 10:20:22

SQL Server

2010-07-12 14:42:38

SQL Server2

2010-11-10 11:51:04

SQL SERVER级

2010-07-26 09:55:55

SQL Server重

2010-07-22 14:59:24

SQL Server

2010-07-08 10:06:43

Tomcat+SQL

2009-05-26 10:21:07

2010-07-20 14:50:42

Tomcat+SQL

2011-04-06 13:14:29

SQL Server 安装

2009-07-03 13:10:06

SQL Server2tomcatJSP

2010-07-12 14:29:09

2011-03-15 09:55:07

SQL Server2数据库崩溃还原数据库

2010-07-26 13:33:28

SQL Server

2010-07-23 09:15:08

安装SQL Serve
点赞
收藏

51CTO技术栈公众号