2013-05-05 4 views
0

Может кто-нибудь пролить мысль об этом:INSERT заявление противоречит проверочное ограничение

У меня есть сотрудник таблицы со столбцом employeeNumber char(8) с проверочного ограничения

(employeeNumber like '[1-9][1-9][1-9][1-9][1-9][1-9][1-9][1-9]') 

При попытке вставить следующий сотруднику номер: '12345678'

я получаю следующее сообщение об ошибке:

Msg 547, Level 16, State 0, Line 1
The INSERT statement conflicted with the CHECK constraint "employeeNumber_check". The conflict occurred in database "MetukisDB", table "dbo.TblEmployee", column 'employeeNumber'.

+1

Только в cqase дайте нам некоторые конкретные детали: оператор SQL ограничения на создание (или создайте таблицу, где также создается ограничение), и полный оператор insert. Или эквивалентный материал. – boisvert

+1

Какой именно запрос вы используете для вставки? –

+11

'CREATE TABLE #T (employeeNumber CHAR (8) CHECK (employeeNumber LIKE) [1-9] [1-9] [1-9] [1-9] [1-9] [1-9] [1- 9] [1-9] ')); INSERT INTO #T VALUES (' 12345678 ') 'отлично работает для меня. Я полагаю, что фактическое значение, которое вставлено, не то, что вы думаете. Просьба предоставить образец, который не работает. –

ответ

1

Ваш код должен работать. Однако у меня есть два предложения.

Во-первых, получите список реальных номеров сотрудников и используйте FK для проверки столбца.

Два, Если это Таблица сотрудников, вы можете попробовать.

cast(cast(employeeNumber as int) as char(8)) = employeeNumber 
AND cast(employeeNumber as int) > 10000000 
AND charindex('0', employeeNumber) = 0 
Смежные вопросы