有2个表分别为A,B .    A包含字段X1(主键),X2(外键-指向表B主键Y1)    表B包含字段Y1(主键),Y2(外键-指向表A主键即X1),  这样的sql ddl 问题在哪? 在线等啊。。不要告诉我没这种定义,或者说什么逻辑错误.我要知道这样设计会导致什么结果。最好举例.

解决方案 »

  1.   


    允许空值. ddl没有限制非空
      

  2.   

    1--2
    2--2
    A2--1
    2--2B感觉不对吧,B表就不正确了,违反了主键约束
      

  3.   

    这样已经不是关系型数据库的定义了,跟网状数据库定义类似。网状数据模型的缺点:结构比较复杂,而且随着应用环境的扩大,数据库的结构就变得越来越复杂,不利于最终用户的掌握;网状模型的DDL、DML复杂,并且要嵌入某一种高级语言(如COBOL、C)中,用户不容易掌握,不容易使用
      

  4.   


    应该是死锁了吧。就是你说的。 但是ddl 没有写on update 和 on delete.. 所以不是应该可以加数据么。
      

  5.   

    应该是没加on delete 和on update ? 
      

  6.   

    Create table Country(
                 CountryName TEXT,
                 Capital              TEXT,
                 PRIMARY KEY(CountryName)
                 FOREIGN KEY(Capital) REFERENCES City(CityName) )
     
    Create table City(
                 CityName TEXT,
                 Country              TEXT,
                 PRIMARY KEY(CityName),
                 FOREIGN KEY(CountryName) REFERENCES Country(CountryName) )
     
      

  7.   

    SQL SERVER 允许两张表互相引用,但是在向这两张空表填充初始数据时会因为 FOREIGN KEY 约束而无法执行,此时可暂时禁用约束后再填充,或者使用 BULK INSERT 语句填充(默认不会执行约束检查)。