sql >> Databáze >  >> RDS >> Sqlserver

Porušení chyby SQL omezení PRIMARY KEY

Podle návrhu je vaše tabulka [cresql].[dbo].[AR_Transactions] má obsahovat pouze jednu hodnotu pro primární klíč – ve vašem případě se zdá, že se jedná o kombinaci sloupců, které tvoří tento PK.

Toto není problém SQL, ale zdá se, že jde o koncept návrhu.

Měli byste zjistit, jaká kombinace klíčů tvoří váš primární klíč – může se stát, že návrh uvádí, že můžete tuto kombinaci vložit jednou a později aktualizovat (ačkoli bych to nepovažoval za dobrý návrh).

UPRAVIT

Vzhledem k tomu, že Trans_Id je PK a tento sloupec ve vložení nepoužíváte, je buď vložen jako IDENTITY, jako DEFAULT (brrrrr), nebo pomocí TRIGGER.

IDENTITA: Zkontrolujte, zda není specifikace IDENTITY podělaná. Pokud ano, stačí jej resetovat. Zde je návod, jak Jak mohu znovu nasadit sloupec identity v proměnné tabulky T-SQL?

VÝCHOZÍ: Je to zvláštní volba a možná se budete muset zeptat toho, kdo navrhl databázi, přečíst dokumentaci nebo na to prostě přijít sami. V každém případě je to velmi neobvyklá volba.

SPUŠTĚNÍ: Najděte spouštěč a přečtěte si kód, abyste viděli, co dělá. Zde je návod, jak najít seznam spouštěčů Jaký je nejpřenosnější způsob, jak zkontrolovat, zda na serveru SQL Server existuje spouštěč?

Alternativní scénář:

Problém může mít spouštěč, který se vloží do tabulky AUDIT. Zkontrolujte, zda tabulka nemá nějaké další spouštěče, a podívejte se, co dělají.




  1. spustit externí program se spouštěčem v postgresu 9.4

  2. přidání jedinečného k existujícímu cizímu klíči

  3. Server MYSQL odešel

  4. Najděte maximální a druhý maximální plat pro tabulku zaměstnanců MySQL