一个表是2个主表的子表 这样主键和外键的关系就不可以设置了 有高手指点如何解决么?例如 子表的parentid 一定是主表1的id或主表2的id的约束及其级联更新和删除的动作

解决方案 »

  1.   

    --可以,假设A、B都是主表,关键字分别为id1,id2,子表为C,关键字为id,还有一个字段为pid,分别与A.id1、B.id2建立外键级联更新删除CREATE TABLE [A] (
    [id1] [int] NOT NULL ,
    CONSTRAINT [PK_A] PRIMARY KEY  CLUSTERED 
    (
    [id1]
    )  ON [PRIMARY] 
    ) ON [PRIMARY]
    GOCREATE TABLE [B] (
    [id2] [int] NOT NULL ,
    CONSTRAINT [PK_B] PRIMARY KEY  CLUSTERED 
    (
    [id2]
    )  ON [PRIMARY] 
    ) ON [PRIMARY]
    GO
    CREATE TABLE [C] (
    [id] [int] NOT NULL ,
    [pid] [int] NULL ,
    CONSTRAINT [PK_C] PRIMARY KEY  CLUSTERED 
    (
    [id]
    )  ON [PRIMARY] ,
    CONSTRAINT [FK_C_A] FOREIGN KEY 
    (
    [pid]
    ) REFERENCES [A] (
    [id1]
    ) ON DELETE CASCADE  ON UPDATE CASCADE ,
    CONSTRAINT [FK_C_B] FOREIGN KEY 
    (
    [pid]
    ) REFERENCES [B] (
    [id2]
    ) ON DELETE CASCADE  ON UPDATE CASCADE 
    ) ON [PRIMARY]
    GO
      

  2.   

    sorry 我忘记说明了一点 就是C表的pid是A表 或者是 B表的id 而不是同时是ab2个表的id,
    就是说pid不是a表的就是b表的id 但是 不一定同时是ab2个表的啊 所以 就难了