【问题标题】:Foreign key allow null SQL外键允许空 SQL
【发布时间】:2014-01-05 04:03:19
【问题描述】:

请检查这两个表。

create table Panda (id int identity, koalaId null) 
create table Koala (id int identity)

我需要 koalaId 是表 Koala -> 身份的外键,但我还需要 koalaId 可以是 NULL

解决这个问题后,我需要从 Panda 获取数据,但我只得到一个错误:

Panda 的属性 koalaId 未设置为 null。此属性必须设置为非 null 且类型为 Int32 的值。

我想将koalaId 设置为null

感谢您的建议。

【问题讨论】:

  • 该消息不是 SQL 消息 - SQL Server 的外键没有固有的限制来防止空值。因此,无论您面临什么限制,它都在<X> 中,其中<X> 是您用来与数据库交互的任何工具、库或框架。您没有向我们提供任何信息。
  • 一定有别的东西,因为 SQL Server 中带有 FK 的字段可以为空。
  • 你在使用实体框架吗?您的错误消息与此类似:stackoverflow.com/questions/5502872/…
  • 是的,我正在使用 Enity Framewrok,我的问题已经解决了。谢谢大家的建议。

标签: c# sql-server null foreign-keys


【解决方案1】:

默认情况下,外键列将允许空值。你不想明确提及它。

**for example:**
             Create table Kola(Id numeric identity(1,1) primary key)
             Create table Panda(Id numeric identity(1,1),
                                KolaId numeric references Kola(Id))

*注意:*但在被引用之前,请确保表 'kola' 中的列 'id' 应该是主键 在另一张桌子旁。

【讨论】:

    【解决方案2】:

    这是熊猫和可乐的创建代码:

        CREATE TABLE [dbo].[Kola](
            [id] [int] NOT NULL,
            [kolaName] [nchar](10) NULL,
          CONSTRAINT [PK_Kola] PRIMARY KEY CLUSTERED 
        (
            [id] ASC
        )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,                           ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
        ) ON [PRIMARY]
    
        GO
    

        CREATE TABLE [dbo].[Panda](
            [id] [int] NOT NULL,
            [KolaId] [int] NULL,
         CONSTRAINT [PK_Panda] PRIMARY KEY CLUSTERED 
        (
            [id] ASC
        )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,         ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
        ) ON [PRIMARY]
    
        GO
    
        ALTER TABLE [dbo].[Panda]  WITH CHECK ADD  CONSTRAINT [FK_Panda_Kola] FOREIGN         KEY([KolaId])
        REFERENCES [dbo].[Kola] ([id])
        GO
    
        ALTER TABLE [dbo].[Panda] CHECK CONSTRAINT [FK_Panda_Kola]
        GO
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多