none
SQL Server 2008R2 中, 外键能为什么不能为空? RRS feed

  • 问题

  •  在一个数据库DB中, 有行业表A,  地区表B和企业表C, C中包含属性所属行业(行业ID, 来自行业表A) 和 所属地区(地区ID, 来自地区表B), 当我创建C的实体(如 雅戈尔集团 ), 我想标记出它在什么地方 ( 比如浙江省宁波市 ) , 不想标记它所在的行业的时候, 就好出现 值(行业ID)不能为空的问题.  
    问题: 为什么外键不能为空呢? 在实际应用中, 我并不需要给它一个明确的值, 或者说我给不了它一个准确的值. 
    2014年6月30日 8:22

答案

  • 您好,

    如果設定成 NULL的話,那給Null值是OK!

    CREATE TABLE Customer (
        CustID INT IDENTITY PRIMARY KEY,
        CustName VARCHAR(40)
    )

    GO

    INSERT INTO Customer(CustName) VALUES('Rainmaker');

    CREATE TABLE Sales (
        SalesID INT IDENTITY PRIMARY KEY,
        CustID INT NULL FOREIGN KEY REFERENCES Customer (CustID)
    )

    GO

    --值在OK!
    INSERT INTO Sales (CustID) SELECT 1
     
     
    --給Null也OK!
    INSERT INTO Sales (CustID) SELECT NULL

     --給Null也OK!
    INSERT INTO Sales (CustID) SELECT NULL


    亂馬客blog: http://www.dotblogs.com.tw/rainmaker/

    2014年7月1日 1:55

全部回复