SQL Server数据库创建删除FK的问题



我正在尝试编写一个查询以创建所有表等等

所以我已经尝试了一段时间来编写一个查询,以删除表并重新制作。它有一个外键,不会让我这样做。

这是我的表格:

IF OBJECT_ID('Employees') IS NOT NULL               
    DROP Table Employees                               
CREATE TABLE Employees 
(
     eID int NOT NULL IDENTITY (1,1) PRIMARY KEY,
     eName varchar(255) NOT NULL,
     uID int NOT NULL,
);
IF OBJECT_ID('eA') IS NOT NULL /* checks if exists*/
    DROP Table eA                  /*removes */
CREATE TABLE eA 
(
    aID int NOT NULL IDENTITY(1,1) PRIMARY KEY,
    eID int NOT NULL,
    CONSTRAINT FK_MadeUpName 
         FOREIGN KEY (eID) REFERENCES Employees(eID),
);
ALTER TABLE [dbo].[eA] 
DROP CONSTRAINT [FK_MadeUpName]

获得此错误:

msg 3726,16级,状态1,第47行
无法删除对象"员工",因为它是由外键约束引用的。

msg 2714,第16级,状态6,第49行
数据库中已经有一个名为"员工"的对象。

编辑******************我有一个拼写错误。...大声笑以下工作。我把它放在创建员工表之前。alter表[dbo]。

谢谢所有!

序列位置问题。

将fk放到员工表

丢弃员工表

- >添加员工表

Drop EA表

- >添加EA表

将FK添加到员工表

可选的是您可以向后做整个事情

Drop EA表

添加EA表

- >表定义中没有FK

丢弃员工表

- >添加员工表

将FK添加到员工表

您可以在数据库中暂时禁用外键约束,然后运行查询,然后查询后,请启用此问题。

这样:

-- disable all constraints
EXEC sp_MSforeachtable "ALTER TABLE ? NOCHECK CONSTRAINT all"

查询后启用所有约束

-- enable all constraints
    exec sp_MSforeachtable @command1="print '?'", @command2="ALTER TABLE ? WITH CHECK CHECK CONSTRAINT all"

最新更新