Chinaunix

标题: 完整性约束问题! [打印本页]

作者: Boyce    时间: 2003-04-07 15:30
标题: 完整性约束问题!
MYsql数据库:  
我有下面几个个表:
  1.   
  2. CREATE  TABLE  board  (   
  3. boardid  int(10)  unsigned  NOT  NULL  auto_increment,   
  4. boardname  varchar(100)  NOT  NULL,   
  5. boardnum  int(10)  unsigned  NOT  NULL,   
  6. PRIMARY  KEY  (boardid),  
  7. KEY  boardnum(boardnum)  
  8. );   
  9. CREATE  TABLE  forum  (  
  10. forumid  smallint(5)  unsigned  NOT  NULL  auto_increment,  
  11. boardid  smallint(5)  unsigned  DEFAULT  '0'  NOT  NULL  ,   
  12. styleid  smallint(5)  unsigned  DEFAULT  '0'  NOT  NULL,  
  13. title  char(100)  NOT  NULL,  
  14. description  char(250)  NOT  NULL,   
  15. forumkind  smallint(6)  DEFAULT  '0'  NOT  NULL,   
  16. forumlogo  char(50)  NOT  NULL,  
  17. forumimage  char(50)  NOT  NULL  DEFAULT  '0'  NOT  NULL,  
  18. islocked  smallint(5)  unsigned  DEFAULT  '0'  NOT  NULL,   
  19. canxbbcode  smallint(6)  DEFAULT  '1'  NOT  NULL,   
  20. cancode  smallint(6)  DEFAULT  '1'  NOT  NULL,   
  21. cancolor  smallint(6)  DEFAULT  '1'  NOT  NULL,   
  22. canemail  smallint(6)  DEFAULT  '1'  NOT  NULL,   
  23. canflash  smallint(6)  DEFAULT  '0'  NOT  NULL,  
  24. canfont  smallint(6)  DEFAULT  '1'  NOT  NULL,  
  25. canimage  smallint(6)  DEFAULT  '1'  NOT  NULL,   
  26. canmedia  smallint(6)  DEFAULT  '0'  NOT  NULL,  
  27. cantext  smallint(6)  DEFAULT  '1'  NOT  NULL,   
  28. canurl  smallint(6)  DEFAULT  '1'  NOT  NULL,  
  29. cancss  smallint(6)  DEFAULT  '1'  NOT  NULL,  
  30. canupload  smallint(6)  DEFAULT  '0'  NOT  NULL,  
  31. uploadsize  smallint(6)  NOT  NULL,  
  32. PRIMARY  KEY  (forumid),  
  33. key  boardid(boardid)//这里  
  34. );   
  35. CREATE  TABLE  topic  (   
  36. topicid  int(10)  unsigned  NOT  NULL  auto_increment,   
  37. forumid  smallint(5)  unsigned  DEFAULT  '0'  NOT  NULL,   
  38. title  varchar(100)  NOT  NULL,   
  39. lastpost  char(20)  DEFAULT  '0000-00-00  00:00:00'  NOT  NULL,  
  40. pollid  int(10)  unsigned  DEFAULT  '0'  NOT  NULL,   
  41. username  varchar(50)  NOT  NULL,   
  42. userid  int(10)  unsigned  DEFAULT  '0'  NOT  NULL,   
  43. dateline  char(20)  DEFAULT  '0000-00-00  00:00:00'  NOT  NULL,   
  44. hits  int(10)  unsigned  DEFAULT  '0'  NOT  NULL,   
  45. iconname  varchar(50)  NOT  NULL,   
  46. notes  varchar(250)  NOT  NULL,   
  47. islocked  smallint(5)  unsigned  DEFAULT  '0'  NOT  NULL,  
  48. istop  smallint(5)  unsigned  DEFAULT  '0'  NOT  NULL,  
  49. PRIMARY  KEY  (topicid),  
  50. KEY  forumid  (forumid),//这里  
  51. key  lastpost(lastpost)  
  52. );   

  53. CREATE  TABLE  post  (   
  54. postid  int(10)  unsigned  NOT  NULL  auto_increment,   
  55. topicid  int(10)  unsigned  DEFAULT  '0'  NOT  NULL,   
  56. userid  int(10)  unsigned  DEFAULT  '0'  NOT  NULL,   
  57. dateline  char(20)  DEFAULT  '0000-00-00  00:00:00'  NOT  NULL,   
  58. pagetext  mediumtext  NOT  NULL,   
  59. isedit  smallint(5)  DEFAULT  '0'  NOT  NULL,   
  60. edituserid  int(10)  unsigned  DEFAULT  '0'  NOT  NULL,   
  61. editdate  char(20)  DEFAULT  '0000-00-00  00:00:00'  NOT  NULL,  
  62. ipaddress  varchar(16)  NOT  NULL,   
  63. PRIMARY  KEY  (postid),   
  64. key  userid(userid),   
  65. KEY  topicid  (topicid)  //这里  
  66. );   
复制代码

可以看出他们之间的外键约束关系.  
问题:每当删除一个board时候,下面的各个表中有外键约束的全部删除,怎么实现?(例如删除一个boardid=3的board,要求以board=3作为外键的的forum全部也删除,依此类推..)请写出具体语句
作者: wolfop    时间: 2003-04-07 21:14
标题: 完整性约束问题!
新的mysql支持级联删除,用
ON DELETE  CASCADE




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2