Sql INSERT语句与CHECK约束冲突
有谁能想一想: 我有一个表employee,其列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
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语句是否真的在做您认为应该做的事情?如果您正在从应用程序发送值,您是否调试过它以验证该值?