我正在尝试编写一个查询以创建所有表等等
所以我已经尝试了一段时间来编写一个查询,以删除表并重新制作。它有一个外键,不会让我这样做。
这是我的表格:
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"