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语句做一些判断,就可以解决异常的出现。

  • 相关阅读:
    使用MyBatis生成插件
    关联源码及日志
    下载依赖
    框架简介及基本使用
    注解的本质 及 反射读取属性值
    元注解
    广告系统学习笔记(一)
    Nginx学习笔记(三)
    Nginx学习笔记(二)
    Nginx学习笔记(一)
  • 原文地址:https://www.cnblogs.com/insus/p/3003555.html
Copyright © 2011-2022 走看看