我使用以下命令创建了一个表:
create table Table1(
Id int Not Null
Foreign key
references Table2(Id)
on delete cascade
on update cascade,
UserName nvarchar(150),
TimeInSeconds int Not Null
primary key(Id,TimeInSeconds)
);
Run Code Online (Sandbox Code Playgroud)
但现在我想放弃外键.由于我没有给出约束名称,我无法使用:
Alter table <tablename>
drop foreign key <foreign key name>
Run Code Online (Sandbox Code Playgroud)
有什么办法吗?请帮忙.
Lig*_*lb1 26
与Ed的答案类似,但您可以使用此选项根据表和列名称选择键名.
这样,您可以在脚本中运行它,也可以作为子查询来删除约束.
SELECT CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = 'post'
AND COLUMN_NAME = 'userID'
Run Code Online (Sandbox Code Playgroud)
Ed *_*ess 22
您可以在中找到约束的名称 INFORMATION_SCHEMA.TABLE_CONSTRAINTS
select CONSTRAINT_NAME
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where TABLE_NAME = 'Table1'
Run Code Online (Sandbox Code Playgroud)
自从遇到一些陷阱后,扩大答案.另外,我声明了2个外键,所以我添加了一个可选的键来保存,如果它是null,它将被忽略:
declare @name varchar(255),
@table varchar(255) = 'mytable',
@column varchar(255) = 'mykeycolumn',
@validkey varchar(255) = 'mykeyIwanttokeep'
SELECT @name = CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.KEY_COLUMN_USAGE
WHERE TABLE_NAME = @table
AND COLUMN_NAME = @column
AND (CONSTRAINT_NAME != @validkey or @validkey is null)
declare @sql varchar(1023) = 'alter table ' + @table + ' drop ' + @name
exec (@sql)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
28347 次 |
| 最近记录: |