Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Нарушаване на ограничението PRIMARY KEY грешка SQL

По дизайн вашата таблица [cresql].[dbo].[AR_Transactions] трябва да съдържа само една стойност за първичния ключ - във вашия случай това изглежда е комбинация от колони, които съставят този PK.

Това не е проблем със SQL, а изглежда е концепция за дизайн.

Трябва да разберете каква комбинация от ключове съставлява вашия първичен ключ - може да се окаже, че дизайнът гласи, че можете да вмъкнете веднъж и да актуализирате по-късно за тази комбинация (въпреки че не бих сметнал това за добър дизайн).

РЕДАКТИРАНЕ

Тъй като Trans_Id е PK и вие не използвате тази колона във вашето вмъкване, тя или се вмъква като ИДЕНТИЧНОСТ, като ПО ПОДРАЗБИРАНЕ (brrrrr), или използва TRIGGER.

САМОЛИЧНОСТ: Проверете дали спецификацията на IDENTITY не е прецакана. Ако е така, просто го нулирайте. Ето как да Как мога да заредя отново колона за самоличност в променлива на T-SQL таблица?

ПО ПОДРАЗБИРАНЕ: Това е странен избор и може да се наложи да попитате този, който е проектирал базата данни, да прочетете документацията или просто да го разберете сами. Във всеки случай това е много необичаен избор.

ТРИГЕР: Намерете тригера и прочетете кода, за да видите какво прави. Ето как да намерите списък с тригери Кой е най-преносимият начин да проверите дали съществува тригер в SQL Server?

Алтернативен сценарий:

Може да има тригер, който се вмъква в таблица AUDIT, която може да има проблема. Проверете дали таблицата има други тригери и вижте какво правят.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Конвенции за именуване на бази данни от Microsoft?

  2. Как четете XML колона в SQL Server 2008?

  3. SQL Server:връща имена на колони въз основа на стойност на запис

  4. Как да завъртя атрибутите на XML колона в T-SQL

  5. Промяна на свойствата на свързан сървър в SQL Server