Ошибка SQL «Нарушение ограничения PRIMARY KEY» - PullRequest
2 голосов
/ 12 марта 2011

Это, кажется, довольно распространенный вопрос, который задают, но все, что я пробовал до сих пор, осталось без решения. Я использую поле идентификатора для моего ПК, и автоинкремент включен. Это происходит в среде DEV, где данные были объединены с текущими данными.

Любая помощь будет принята с благодарностью.

Я использую SQL Server. Я также запустил DBCC CHECKIDENT ([ceschema.ce_attendeeCredit]), и идентичность, кажется, выстроена правильно. Я думаю, что в игре может быть более глубокая проблема.

INSERT INTO tblpersonCredit
                (
                personID,
                CreditID,
                Amount,
                ReferenceNo,
                CreatedBy
                )
            VALUES
                (
                <cfqueryparam value="#arguments.AttendeeCredit.getAttendeeID()#" CFSQLType="cf_sql_integer" />,
                <cfqueryparam value="#arguments.AttendeeCredit.getCreditID()#" CFSQLType="cf_sql_integer" />,
                <cfqueryparam value="#arguments.AttendeeCredit.getAmount()#" CFSQLType="cf_sql_float" null="#not len(arguments.AttendeeCredit.getAmount())#" />,
                <cfqueryparam value="#arguments.AttendeeCredit.getReferenceNo()#" CFSQLType="cf_sql_varchar" null="#not len(arguments.AttendeeCredit.getReferenceNo())#" />,
                <cfqueryparam value="#arguments.AttendeeCredit.getCreatedBy()#" CFSQLType="cf_sql_integer" />
                )

Ответы [ 2 ]

6 голосов
/ 12 марта 2011

Я заметил эту конкретную строку в вашем вопросе:

Это происходит в среде DEV, где данные были объединены с текущими данными.

После ручной вставки данных в поле автоинкремента вам может понадобиться сбросить счетчик автоинкремента до значения после максимального идентификатора, который вы вставили.

То, как вы это делаете (и нужно ли вам), зависит от базы данных. Например, в MySQL вы можете использовать инструкцию ALTER TABLE:

ALTER TABLE tbl AUTO_INCREMENT = 10000

Эквивалентная команда для сброса начального числа для столбца IDENTITY SQL Server:

DBCC CHECKIDENT(tbl, RESEED, 9999)
0 голосов
/ 27 июня 2016

Использовать следующую логику перед запросом вставки .... выберите MAX (ID) из таблицы;
string queryInsertStudent = String.Format ("вставить в tbStudent (имя студента, имя отца, программы, сеанса, regNo, enrolNo, emailAddress,значения contactNo, CNIC, parmanentAddress, Status) ('{0}', '{1}', '{2}', '{3}', '{4}', '{5}', '{6}',' {7} ',' {8} ',' {9} ',' {10} '); ", Student_Name, F_Name, Programe, Session, RegNo, EnrollNo, Email, Contact, CNIC, Address, Status);// вышеприведенный «string queryInsertStudent» является запросом строкового типа данных для вставки данных в таблицу данных ClassDatabaseConnection.Excute (queryInsertStudent);// здесь "Execute is Method под CLASS" DatabaseConnectionClass "" string student_ID = ClassDatabaseConnection.select ("select MAX (studentId) from tbStudent"). Rows [0] [0] .ToString ();

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...