2016-06-21 11 views
1

Ich habe folgendes:Löschen von Daten mit SQL-Constraints

DELETE FROM ContactBase 
DELETE FROM AccountBase 

Es Fehler mit:

The DELETE statement conflicted with the REFERENCE constraint "account_primary_contact". The conflict occurred in database "BMBLANK_MSCRM", table "dbo.AccountBase", column 'PrimaryContactId'. 
The DELETE statement conflicted with the REFERENCE constraint "account_contacts". The conflict occurred in database "BMBLANK_MSCRM", table "dbo.ContactBase", column 'AccountId'. 

Ich verstehe, weil der Zwang ich die Daten in einer bestimmten Reihenfolge löschen müssen, aber wenn ich umkehren:

DELETE FROM AccountBase 
DELETE FROM ContactBase 

es kehrt nur die Fehlermeldungen:

The DELETE statement conflicted with the REFERENCE constraint "account_contacts". The conflict occurred in database "BMBLANK_MSCRM", table "dbo.ContactBase", column 'AccountId'. 
The DELETE statement conflicted with the REFERENCE constraint "account_primary_contact". The conflict occurred in database "BMBLANK_MSCRM", table "dbo.AccountBase", column 'PrimaryContactId'. 

Wie lege ich diese Tabellen leer?

Dank

+0

Ich frage mich, was ist die Beziehung zwischen diesen 2 Tabellen? klingt wie du hast eine viel zu viele Beziehung? wenn ja, würde ich das korrigieren, statt die Einschränkungen zu umgehen – GuidoG

+0

1) eine der referenzierenden Spalten auf null aktualisieren 2) löschen –

Antwort

1

zuerst die Integritätsregeln, die Daten löschen und fügen Sie sie wieder:

ALTER TABLE AccountBase 
    DROP CONSTRAINT account_contacts; 

ALTER TABLE ContactBase 
    DROP CONSTRAINT account_primary_contact; 

DELETE FROM ContactBase; 
DELETE FROM AccountBase; 

ALTER TABLE AccountBase 
ADD FOREIGN KEY (account_contacts) 
REFERENCES ContactBase(PrimaryContactId); 

ALTER TABLE ContactBase 
ADD FOREIGN KEY (account_primary_contact) 
REFERENCES AccountBase(AccountId); 

Vielleicht mischte ich ihnen, seine verwirrend ohne die Tabellen DDL, also wenn ich es gerade adjustiert.

1

Sie ein Skript der Zwänge erzeugen kann, die Beschränkungen fallen, aus Tabellen löschen, verwenden Sie dann das Skript die Einschränkungen neu zu erstellen.

How to generate all constraints scripts

1

Tropfen die Zwänge und dann die Daten aus den Tabellen löschen. Fügen Sie dann bei Bedarf die Einschränkungen erneut hinzu.

Verwandte Themen