zoukankan      html  css  js  c++  java
  • The INSERT statement conflicted with the FOREIGN KEY constraint

    出现这个错误,是因为插入一个长度为0的值至有外键约束的字段内。

    我们来做个实验,并尝试解决它。

    首先创建两个表,[dbo].[T1]是主表,[dbo].[T2]是子表,而子表的[c2]是一个有外键约束的字段。

    View Code
    CREATE TABLE [dbo].[T1]
    (
        col1 NVARCHAR(20) PRIMARY KEY NOT NULL,
        col2 NVARCHAR(30) NULL,
        col3 NVARCHAR(30) NULL
    )
    
    GO
    
    CREATE TABLE [dbo].[T2]
    (
        c1 NVARCHAR(20) NOT NULL PRIMARY KEY,
        c2 NVARCHAR(20) NULL FOREIGN KEY REFERENCES [dbo].[T1] ([col1]),
        c3 NVARCHAR(30) NULL
    )
    GO


    下面我们做实验,

    我们再做一个实验:

    什么情况?因为SQL有三值运算,TURE,FALSE 和UNKNOWN。约束其实是对满足条件,即条件表达式返回TRUE的一律通过。NULL在SQL SERVER里的类型是UNKNOWN,可以成理解为任何类型,可能为TRUE。而长度为 0的''空值,返回的将是False。

    因此,我们在开SQL程序时,如果你的带有外键约束的字段,可以存储NULL值时,需要在插入的SQL语句做一些判断,就可以解决异常的出现。

  • 相关阅读:
    JSP文件上传下载组件(2)
    JSP文件上传下载组件(1)
    FetchProfile类的作用
    html(二) -- 文本标签和实体字符
    html (一)-- 概述
    单元测试框架--junit
    内省和BeanUtils
    工厂模式
    反射
    观察者设计模式
  • 原文地址:https://www.cnblogs.com/insus/p/3003555.html
Copyright © 2011-2022 走看看