Как убрать The INSERT statement conflicted with the CHECK constraint ошибку?

Ссылка скопирована
1 ответ

Дня доброго!
возникает следующая ошибка при попытке добавить новую запись в БД:

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

    Как убрать The INSERT statement conflicted with the CHECK constraint ошибку?

  • Сергей, Чего гадать, давайте лог с сервера, какой же запрос туда приходит.
  • freeExec, вопрос - как это сделать на убунте?
  • Сергей, посмотрите на байты строки. Может найдете чего интересного

    Дефис в юникоде https://unicode-table.com/ru/2010/

  • А чё вы пример руками делаете INSERT, а проблему испытываете в spInsertEmployee
    И что у вас тут? @empId CHAR,
  • пардон. моя криворукость - было 2 сторед процедуры, вызывал не ту.
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Юрий Linux Ответ

Для того чтобы убрать ошибку "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)

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" должна быть устранена.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно