Hvordan å validere data i sql server?

stemmer
0

Jeg har et problem knyttet til data i SQL Server. I min database noen av begrensningen ikke er aktivert vil si at de ikke ble sjekket, etter litt tid å jobbe med det vi fant dette problemet som en forelder rader kan slettes uten å slette barnet, som var et problem. Jeg aktivert all begrensningen i databasen ved hjelp av spørringen

ALTER TABLE tbl_name CHECK CONSTRAINT ALL 

ovenfor spørringen ble utført på alle bordene som databasen uten noen feil. Men min bekymring er om det vil fungere eller ikke, om det vil fungere på de eksisterende data så hva som vil skje med disse dataene hvis overordnede tabellen data er slettet.

Jeg vil vite er det noen måte slik at jeg kan validere slike data data som forelder posten finnes ikke i hele databasen. Det er omtrent 270 constraintsom inneholder FOREIGN KEY AND UNIQUE KEY. Jeg ønsker ikke å gå for manuelle alternativet.

Kan du hjelpe meg ut.

Publisert på 18/09/2012 klokken 05:46
kilden bruker
På andre språk...                            


2 svar

stemmer
1

ALTER TABLE tbl_name CHECK CONSTRAINT ALL

bare gjen muliggjør begrensninger. Viktigere, begrensningene ikke er kontrollert mot den eksisterende data i databasen (de er heller ikke klarert av optimerer). Hvis du ønsker at det skal skje, må du angi WITH CHECKogså:

ALTER TABLE tbl_name WITH CHECK CHECK CONSTRAINT ALL

(Og ja, ordet CHECKforekommer to ganger)

Hvis du utfører denne, og det er foreldreløse barn rader (eller andre ugyldige begrensninger), så ALTER TABLEvil mislykkes med en feilmelding. Det er ingenting SQL Server kan gjøre for å fikse dette problemet - det er for deg å bestemme om du a) fjerne foreldreløse rekker, eller b) å gjenskape, på noen måte, et egnet forelder rad for dem.

Svarte 18/09/2012 kl. 06:13
kilden bruker

stemmer
0

Du kan også legge til 'ON DELETE CASCADE' kode til slutten av fremmednøkler for å hindre at foreldreløse barn rader fra vedvarer.

Dette er mer av en 'bedre praksis' fremover enn en løsning, men jeg tror Damien_The_Unbeliever har besvart din viktigste spørsmålet.

Svarte 27/11/2012 kl. 19:45
kilden bruker

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more