SQL INSERT konflikt cizího klíče

...

Moderátor: Mods_senior

Uživatelský avatar
cervcek
Level 5
Level 5
Příspěvky: 2241
Registrován: leden 12
Bydliště: Vrchlabí
Pohlaví: Muž
Stav:
Offline

SQL INSERT konflikt cizího klíče

Příspěvekod cervcek » 24 lis 2023 00:02

Ahoj,

dnes mě v SSIS flow potkal OLE DB error "The INSERT statement conflicted with the FOREIGN KEY constraint...", klasika říkám si, neexistující zákazník ke kterému se snažím nahrát prodejní transakci, jenže hodnota v referencované tabulce existuje.

Kontroloval jsem datové typy v obou tabulkách, obojí 4 bajtový integer, takže důvod, aby nematchnul klíč o stejné číslené hodnotě, je mi napostou záhadou. Poté jsem spustil flow znovu a řádků, které mi insert odmítl bylo jiné množství, nechápu proč, spouštím znovu, opět jiné množství nematchujících řádků na cizí klíč číslo zákazníka.

Byl jsem už opravdu zoufalý, tak jsem zkusmo do workflow vřadil lookup do produktové tabulky na onen nematchující klíč a v lookupu (prakticky join statement) mi klíče z obou tabulek matchnuly. O to divnější je, že když jsem si v lookupu oddělil kopii daného IDčka do jiného sloupce, tak na něm insert už proběhne.

Jinak řešeno error říká "4 není v tabulce zákazník, nemůžu vložit záznam s prodejem zákazníkovi č. 4". Vyhledám v tabulce zákazníci záznam zákazníka č. 4, spojím ho se záznamem o prodeji přes hodnotu 4, z daného záznamu si "zjistím ID zákazníka", což je právě ta 4, vložím záznam s prodejem zákazníkovi č. 4, insert projde bez chyby.

Sám vůbec nerozumím, proč mi insert v druhém případě funguje a v prvním ne.

Visual studio 2019, MS SQL server 2016.

Pokud vás něco napadne, děkuju za postřehy.
Děkuju za vaše názory a rady. :thumbup:

Reklama

Zpět na “Vše ostatní (sw)”

Kdo je online

Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 53 hostů