mssql2000数据库有两个表Product_Info和Product_Supply
Product_Info有Product_ID,Product_Name,Product_Price,Product_Unit字段,
Product_Supply有Product_ID,Product_Supply_Name,Product_Quantity字段
其中Product_Info表中Product_ID是主键
在delphi7中,比如我删除了Product_Info表中的一条Product_ID=123的记录,那么Product_Supply表中Product_ID=123的记录也要删除,该怎么做???看过一本书,说什么数据的完整性之类的,好象要在sql2000中设置什么表的关联之类的,这样就可以一并删除!!!要是真的可以该怎么设置?????
应该怎么做?????最好一步步来,本人刚学不久!!!还是说只能写两条删除语句,分别删除Product_Info和Product_Supply中的Product_ID=123记录???? 谢谢各位大哥们!!!!!

解决方案 »

  1.   

    mssql2000支持级联删除,和级联更新。主要是用于主从表。
    这种主从不是逻辑上的主从,而是在数据库中就要设定主从关系,就是常说的外键。举一个例子
    主表
    create table Table_Master (
       ID                   integer              identity,
       UserName             varchar(10)          not null,
       constraint PK_TABLE_MASTER primary key (ID)
    )
    go
    从表
    create table Table_Detail (
       UserID               integer              identity,
       ID                   integer              not null,
       Price                money                null,
       constraint PK_TABLE_DETAIL primary key (UserID)
    )
    go
    这句话就是设定了外键,以及级联更删除,删除
    alter table Table_Detail
       add constraint FK_TABLE_DE_REFERENCE_TABLE_MA foreign key (ID)
          references Table_Master (ID)
             on update cascade on delete cascade
    go
      

  2.   

    如果设置关联,是可以把相关的一并删除的,只要把两个表中的Product_ID关联起来
      

  3.   

    在关系里面建立主外键,选上级联更新删除
    具体怎么做呢???
    是在mssql中操作么???是在建表的时候设置么??????
      

  4.   

    madyak(无天) 
    说的已经很清楚了
    是在数据库中创建;
    可以在建表的时候,也可以是修改表的时候;