Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql INSERT语句与CHECK约束冲突_Sql_Sql Server - Fatal编程技术网

Sql INSERT语句与CHECK约束冲突

Sql INSERT语句与CHECK约束冲突,sql,sql-server,Sql,Sql Server,有谁能想一想: 我有一个表employee,其列employeenumberchar(8)带有检查约束 (employeeNumber like '[1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9]') 尝试在员工编号中插入以下内容时:“12345678” 我得到以下错误: 味精547,第16级,状态0,第1行 INSERT语句与CHECK约束“employeeNumber\u CHECK”冲突。冲突发生在数据库“MetukisDB”、表“dbo.tblemEmp

有谁能想一想:

我有一个表employee,其列
employeenumberchar(8)
带有检查约束

(employeeNumber like '[1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9]')
尝试在员工编号中插入以下内容时:“12345678”

我得到以下错误:

味精547,第16级,状态0,第1行
INSERT语句与CHECK约束“employeeNumber\u CHECK”冲突。冲突发生在数据库“MetukisDB”、表“dbo.tblemEmployee”、列“employeeNumber”中


你的代码应该可以工作。不过,我有两个建议

首先,获取真实员工编号的列表,并使用FK验证您的列

第二,如果这是Employees表,您可能想试试

cast( cast( employeeNumber as int ) as char(8) ) = employeeNumber 
AND cast(employeeNumber as int) > 10000000
AND charindex('0', employeeNumber) = 0

就在cqase中,给我们一些具体的细节:CREATECONSTRAINTSQL语句(或CREATETABLE,其中也创建了约束)和完整的insert语句。或者类似的东西。插入时使用的确切查询是什么?
CREATE TABLE#T(employeeNumber CHAR(8)检查(employeeNumber类似于“[1-9][1-9][1-9][1-9][1-9][1-9][1-9]”);插入到#T值('12345678')
对我来说很好。我假定插入的实际值不是您所想的。请提供失败的可运行示例。顺便说一句:您的模式从所有数字中排除
0
。这是故意的吗?您是否使用SQL Profiler检查INSERT语句是否真的在做您认为应该做的事情?如果您正在从应用程序发送值,您是否调试过它以验证该值?