ICode9

精准搜索请尝试: 精确搜索
首页 > 数据库> 文章详细

新阁上位机开发——数据库之SQL语句提交违法数据库约束的错误

2022-04-25 18:00:30  阅读:154  来源: 互联网

标签:错误 提示 数据库 SQLServer 约束 数据表 新阁 SQL


最近小伙伴学习数据库真的是掉头发啊,错误一堆堆,总也解决不完,其实对于我们老鸟来说,如果认真总结一下,会发现错误就那么几种,掌握了你就是数据库老鸟,来吧一起看看都有啥。

 

 

 

《C#程序》的错误提示:

 

 

 

《SQLServer数据库的错误》

 

 

 

【问题分析】:以上两种错误都是同一个原因,就是sql语句中“字段的个数”和实际“字段 值”(values里面的)不一样导致的,解决方法就是仔细检查,有多少个字段,然后看给的对应值的个数是不是也是一样的,以上错误就是values后面的字段值,对应最后一个字段DepartmentId缺少了值,添加上即可。
【解决方法】:

 

 

 

 

 


《C#程序》的错误提示:

 

 

 

《SQLServer数据库的错误》

 

 

 

【问题分析】:以上两种相同错误“插入重复键”,就是因为在数据表中,某些字段添加了“唯一约束”,这种问题,可以自己打开数据表,肯定有这种情况,比如上面的表中,身份证号就是唯一约束,但是我们从数据库中,查看数据表Employee发现,这个身份证号(120223199001091218)已经存在了,所以报错。

【解决方法】:改换成不同的身份号就行了。

 

 

 

 

《C#程序》的错误提示:

 

 

 

《SQLServer数据库的错误》

 

 

【问题分析】:以上两种相同的错误,是因为我们给的values中,有的字段值超过了字段定义的长度,这时候,需要去数据库中看一下具体的每个字段的长度,然后对比SQL语句中给的值,当然如果有很多字段,也不是每一个都对比,一般就是看看“字符串类型的字段”就可以了,经过查看,在Gender字段中,我们设置的是char(2)两个字符长度,而我们给的值是“男1”,也就是3个字符,所以超出长度,报错。

【问题解决】:只需要改成“男”就可以了。

 

 

 

 

 

《C#程序》的错误提示:

 

 

 

《SQLServer数据库的错误》

 

 

【问题分析】:凡是提示“CHECK约束冲突”的,一定要检查当前表中哪些字段添加了CHECK约束,然后根据约束要求,去核对values中的字段值,比如我们这个表中Gender性别列增加了如下约束:

 

 

右键点击表名称,选择“设计”,然后在表的设计状态下,任何地方再次右键,选择CHECK约束:

 

 

弹窗如下窗口:

 

 

发现,Gender的约束是“男”或“女”,而在上面的SQL语句中,我们写了“非”,所以报错。类似的问题,比如你给某一个字段设置成30-50范围的值,而你的数据不在这个范围,同样也是这个错误。

【问题解决】:只需要把values中的“非”改成“男”就可以了。

 

 

 

 

《C#程序》的错误提示:

 

 

 

《SQLServer数据库的错误》

 

 

【问题分析】:以上两个错误是一样的,非常明确的提示了是“Foreign  key”约束,并且告诉了是表“Department”,对应的字段是“DepartmentId”。这样的话,我们就去核对一下,当前SQL语句中最后一个字段19对应的是DepartmentId,所以,我们去Department表中,看看所有的DepartmentId列中,有没有这个19,打开数据表如下:

 

 

发现确实没有19,这样的话主键表里面没有的数据,从表中是不能使用的,这个也是外键约束的基本要求。

【问题解决】:只要把19改成,数据表中10-15中的值就可以了。

【特别提示】:只要是“约束冲突”,检查的方法都一样,看清楚错误提示的是什么类型的约束,然后去表中查看,仔细核对即可。

以上问题,只要用数据库,其实不管是老鸟还是新手,都会遇到,而在这里如何快速解决才是我们今天这篇文章的关键。

标签:错误,提示,数据库,SQLServer,约束,数据表,新阁,SQL
来源: https://www.cnblogs.com/xiketang/p/16191363.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有