![](/img/trans.png)
[英]Dealing with FK constraints - Emptying and refilling sql server 2008 db
[英]SQL Server 2008 - deleting rows with FK constraints
我在SQL Server 2008中生成了SQL數據庫,如下所示:
CREATE TABLE Client (
ID bigint,
Code varchar(50),
ClientID int NOT NULL
);
ALTER TABLE Client
ADD CONSTRAINT PK_Client PRIMARY KEY CLUSTERED (ClientID);
CREATE TABLE Company (
ID bigint,
Description nvarchar(100),
SubsidiaryOf bigint,
companyID int NOT NULL,
FK_Client_Company int,
PK_Company int
);
ALTER TABLE Company
ADD CONSTRAINT PK_Company PRIMARY KEY CLUSTERED (companyID);
ALTER TABLE Company
ADD CONSTRAINT (ID = ID) FOREIGN KEY (FK_Client_Company)
REFERENCES Client (ClientID);
ALTER TABLE Company
ADD CONSTRAINT (SubsidiaryOf = ID) FOREIGN KEY (PK_Company)
REFERENCES Company (companyID);
CREATE TABLE ContactData (
ID bigint,
LocationID bigint,
Contact nvarchar(50),
contactDataID int NOT NULL,
PK_Location int
);
ALTER TABLE ContactData
ADD CONSTRAINT PK_ContactData PRIMARY KEY CLUSTERED (contactDataID);
ALTER TABLE ContactData
ADD CONSTRAINT (LocationID = ID) FOREIGN KEY (PK_Location)
REFERENCES Location (locationID);
CREATE TABLE Location (
ID bigint,
CompanyID bigint,
Country nvarchar(50),
ZIPCode nvarchar(50),
locationID int NOT NULL,
PK_Company int
);
ALTER TABLE Location
ADD CONSTRAINT PK_Location PRIMARY KEY CLUSTERED (locationID);
ALTER TABLE Location
ADD CONSTRAINT (CompanyID = ID) FOREIGN KEY (PK_Company)
REFERENCES Company (companyID);
並希望刪除所有ID> 140000的公司(其他表中具有相關行)。 我在一個事務中嘗試了將所有INNER JOIN組合在一起,但是FK_Client_Company約束仍然存在問題。 誰能幫我?
還有一件事-我無法添加任何內容/修改數據庫結構/約束。 它必須是基於查詢的解決方案。
首先刪除這些公司的客戶
delete client where id in (select fk_client_company from company where id > 140000)
之后,您應該能夠在company表上運行delete語句
delete company where id > 140000
我“很”肯定這是您要尋找的答案,但我並不是100%肯定,只是因為您的命名方案有點奇怪。 我假設company.fk_client_company = client.id。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.