Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Naruszenie błędu ograniczenia PRIMARY KEY SQL

Zgodnie z projektem, Twoja tabela [cresql].[dbo].[AR_Transactions] ma zawierać tylko jedną wartość klucza podstawowego - w twoim przypadku wydaje się to być kombinacją kolumn, które składają się na ten PK.

To nie jest kwestia SQL, ale wydaje się, że jest to koncepcja projektowa.

Powinieneś dowiedzieć się, jaka kombinacja klawiszy składa się na twój klucz podstawowy - może być tak, że projekt mówi, że możesz wstawić raz i zaktualizować później dla tej kombinacji (chociaż nie uważałbym tego za dobry projekt).

EDYTUJ

Ponieważ Trans_Id jest PK i nie używasz tej kolumny we wstawce, jest ona wstawiana jako TOŻSAMOŚĆ, jako DOMYŚLNA (brrrrr) lub przy użyciu WYZWALACZA.

TOŻSAMOŚĆ: Sprawdź, czy specyfikacja IDENTITY jest zepsuta. Jeśli tak, po prostu go zresetuj. Oto jak Jak mogę ponownie umieścić kolumnę tożsamości w zmiennej tabeli T-SQL?

DOMYŚLNE: Jest to dziwny wybór i być może będziesz musiał zapytać osobę, która zaprojektowała bazę danych, przeczytać dokumentację lub po prostu samodzielnie to rozgryźć. W każdym razie jest to bardzo rzadki wybór.

WYZWALANIE: Znajdź wyzwalacz i przeczytaj kod, aby zobaczyć, co robi. Oto jak znaleźć listę wyzwalaczy Jaki jest najbardziej przenośny sposób sprawdzenia, czy wyzwalacz istnieje w SQL Server?

Alternatywny scenariusz:

Może istnieć wyzwalacz wstawiany do tabeli AUDIT, który może powodować problem. Sprawdź, czy tabela ma inne wyzwalacze i zobacz, co one robią.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Podziel wiersz na podstawie wartości kolumny

  2. Czy zapytanie REPLACE INTO jest dobrą praktyką?

  3. Jak ustawić zmienną z zapytania SQL?

  4. SQL Server:kolumny do wierszy

  5. Instrukcja SQL UPDATE do przełączania dwóch wartości w dwóch wierszach