表1id name
表2 id1  id2  otherfields我想让表1的id作为主键表
表2的两个字段id1和id2作为从键,可是这样的关系是无法建立的,如何处理?
就是说id1和id2这两个字段都要以表1的id作为主键并且表1做删除操作时,只要id1或id2有1个的值在表1中被删除,表2的这条记录也跟着级联删除

解决方案 »

  1.   

    我想用trigger可以实现,但是不想用
      

  2.   

    SQL级联删除与级联更新使用格式: CREATE TABLE A001(ID INT PRIMARY KEY,NAME VARCHAR(20)) CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE ON UPDATE CASCADE,AGE TINYINT) 
      

  3.   

    CREATE TABLE A001(ID INT PRIMARY KEY,NAME VARCHAR(20)) 
    insert a001 select 1,'a'
    insert a001 select 2,'b'
    CREATE TABLE A002(ID INT REFERENCES A001(ID)ON DELETE CASCADE ON UPDATE CASCADE,AGE TINYINT) 
    insert a002 select 1,10
    insert a002 select 1,20delete from a001 where id=1select * from a001
    /*
    ID          NAME
    ----------- --------------------
    2           b(1 行受影响)
    */select * from a002
    /*
    ID          AGE
    ----------- ----(0 行受影响)
    */
    drop table a001,a002
      

  4.   


    CREATE TABLE A004(ID INT PRIMARY KEY,NAME VARCHAR(20)) CREATE TABLE A003(ID1 INT REFERENCES A004(ID) ON DELETE CASCADE ON UPDATE CASCADE,ID2 INT REFERENCES A004(ID) ON DELETE CASCADE ON UPDATE CASCADE,AGE TINYINT)我要的如上的语句,然而执行,出错服务器: 消息 1785,级别 16,状态 1,行 3
    将 FOREIGN KEY 约束 'FK__A003__ID2__6C190EBB' 引入表 'A003' 中将导致循环或多重级联路径。请指定 ON DELETE NO ACTION 或 ON UPDATE NO ACTION,或修改其它 FOREIGN KEY 约束。
    服务器: 消息 1750,级别 16,状态 1,行 3
    未能创建约束。请参阅前面的错误信息。
      

  5.   

    做二个外键行不行?
    id1和id2都定义成id的外键
      

  6.   


    CREATE TABLE A004(ID INT PRIMARY KEY,NAME VARCHAR(20)) CREATE TABLE A003(ID1 INT REFERENCES A004(ID) ON DELETE CASCADE ON UPDATE CASCADE,ID2 INT REFERENCES A004(ID),AGE TINYINT) 这样就可以了。
      

  7.   


    CREATE TABLE A001(ID INT PRIMARY KEY,NAME NVARCHAR(20)) CREATE TABLE A002(ID1 INT REFERENCES A001(ID)ON DELETE CASCADE ON UPDATE CASCADE,ID2 INT 
    ,AGE TINYINT PRIMARY KEY(ID1,ID2))表2 要有主键的啊
      

  8.   

    CREATE TABLE A004(ID INT PRIMARY KEY,NAME VARCHAR(20)) CREATE TABLE A003(ID1 INT REFERENCES A004(ID) ON DELETE CASCADE ON UPDATE CASCADE,ID2 INT REFERENCES A004(ID),AGE TINYINT) 
    这样的话,id2是不能够级联删除的啊.
      

  9.   

    主从关系比较畸形。你应该按顺序考虑这几个问题:
    1.我的表一定要这样设计吗?
    2.insert时,表2的id1,id2是怎么处理的?
    3.update时,主从字段是怎么处理的?用的是外键还是触发器?(应该没用外键)
    4.delete时,用什么方案?最好和update用同一方案。