Как убрать The INSERT statement conflicted with the CHECK constraint ошибку?
Дня доброго!
возникает следующая ошибка при попытке добавить новую запись в БД:
The INSERT statement conflicted with the CHECK constraint "CK_emp_id". The conflict occurred in database "pubs", table "dbo.employee", column 'emp_id'. The statement has been terminated. |
The INSERT statement conflicted with the CHECK constraint "CK_emp_id". The conflict occurred in database "pubs", table "dbo.employee", column 'emp_id'. The statement has been terminated.
Сам constraint выглядит так:
([emp_id] like '[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]' OR [emp_id] like '[A-Z]-[A-Z][1-9][0-9][0-9][0-9][0-9][FM]') |
([emp_id] like '[A-Z][A-Z][A-Z][1-9][0-9][0-9][0-9][0-9][FM]' OR [emp_id] like '[A-Z]-[A-Z][1-9][0-9][0-9][0-9][0-9][FM]')
C# код:
SqlParameter pEmpIdIns = new SqlParameter("@EmpId", empId); pEmpIdIns.SqlDbType = SqlDbType.Char; |
SqlParameter pEmpIdIns = new SqlParameter("@EmpId", empId); pEmpIdIns.SqlDbType = SqlDbType.Char;
Хранимая процедура:
CREATE OR ALTER PROCEDURE spInsertEmployee @empId CHAR, @fName VARCHAR(20), @mInit CHAR(1)=NULL, @lName VARCHAR(30), @jobId SMALLINT, @jobLvl TINYINT, @pubId CHAR(4), @hireDate DATETIME AS BEGIN INSERT INTO employee (emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date, EmployeeType) VALUES(@empId, @fName, @mInit, @lName, @jobId, @jobLvl, @pubId, @hireDate, 0); END GO |
CREATE OR ALTER PROCEDURE spInsertEmployee @empId CHAR, @fName VARCHAR(20), @mInit CHAR(1)=NULL, @lName VARCHAR(30), @jobId SMALLINT, @jobLvl TINYINT, @pubId CHAR(4), @hireDate DATETIME AS BEGIN INSERT INTO employee (emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date, EmployeeType) VALUES(@empId, @fName, @mInit, @lName, @jobId, @jobLvl, @pubId, @hireDate, 0); END GO
Передаю значение из формы: "A-A11111F" (или любое другое)
Руками в если выполнять sql
INSERT INTO employee (emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date, EmployeeType) VALUES('A-A11111F', 'Test', 'T', 'Tester', 14, 90, 9952, 2021-01-01, 0); |
INSERT INTO employee (emp_id, fname, minit, lname, job_id, job_lvl, pub_id, hire_date, EmployeeType) VALUES('A-A11111F', 'Test', 'T', 'Tester', 14, 90, 9952, 2021-01-01, 0);
то все добавляется.
Как и что поправить нужно? Благодарствую.
Дополнительно:
Ответы:
Очевидно же, что на сервер уходит вовсе не то, что вы вставляете руками.
- Вроде то: cmd / Parameters
- Сергей, Чего гадать, давайте лог с сервера, какой же запрос туда приходит.
- freeExec, вопрос - как это сделать на убунте?
- Сергей, посмотрите на байты строки. Может найдете чего интересного
Дефис в юникоде https://unicode-table.com/ru/2010/
- А чё вы пример руками делаете INSERT, а проблему испытываете в spInsertEmployee
И что у вас тут? @empId CHAR, - пардон. моя криворукость - было 2 сторед процедуры, вызывал не ту.
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос

Для того чтобы убрать ошибку "The INSERT statement conflicted with the CHECK constraint", необходимо понять, что означает данная ошибка.
Эта ошибка возникает в случае, когда выполняется операция вставки записи в базу данных, а значения, которые вы пытаетесь вставить, не удовлетворяют условиям, установленным в CHECK constraint на таблицу. CHECK constraint - это ограничение, которое определяет условия, которым должны соответствовать данные в столбце или столбцах таблицы.
Для решения данной проблемы, вам необходимо убедиться, что данные, которые вы пытаетесь вставить, соответствуют условиям CHECK constraint. Возможно, вам нужно пересмотреть данные, которые вы пытаетесь вставить, и убедиться, что они соответствуют всем ограничениям, установленным на таблицу.
Пример решения проблемы в случае, если у вас возникает ошибка при вставке записи в таблицу с CHECK constraint в MySQL:
INSERT INTO table_name (column1, column2) VALUES (value1, value2)
Проверьте значения value1 и value2 на соответствие условиям, установленным в CHECK constraint для столбцов column1 и column2. Возможно, вам нужно изменить значения или условия в CHECK constraint.
Таким образом, следует внимательно изучить условия, установленные в CHECK constraint на таблицу, и убедиться, что данные, которые вы пытаетесь вставить, соответствуют этим условиям. После этого ошибка "The INSERT statement conflicted with the CHECK constraint" должна быть устранена.