0

我有两张桌子:

CREATE TABLE dbo.country
(
cntry_id  VARCHAR(2)    NOT NULL,
name      VARCHAR(50)   NOT NULL,

CONSTRAINT pk_country PRIMARY KEY (cntry_id)

CREATE TABLE dbo.city
(
city_id   VARCHAR(3)    NOT NULL,
name      VARCHAR(50)   NOT NULL,
cntry_id  VARCHAR(2)    NOT NULL,

CONSTRAINT pk_city PRIMARY KEY (city_id),
FOREIGN KEY (cntry_id) REFERENCES dbo.country(cntry_id)
) 

我正在尝试放弃 fk 约束,这样我就可以放弃桌子了。

FK 定义存在:

EXEC sp_fkeys country 
pktable_qualifier   pktable_owner   pk_tablename ... 
xxxxxx          xxx             country cntry_id ....

(数据库名称模糊)

但两者

EXEC sp_dropkey foreign, country, city
EXEC sp_dropkey foreign, city, country

返回

264 Error (17499) No foreign key for the table or view exists. sp_dropkey(263)

有人知道如何丢弃这些钥匙吗?

先感谢您

瑞安

4

3 回答 3

2
ALTER TABLE dbo.city DELETE FOREIGN KEY [enternameoftheforeignkeyhere]

否则我不知道可能是什么原因。错误消息的编号意味着他无法从 syskeys 中删除它。但他发现两张桌子都很好,而且你也是桌子的主人。


您是否尝试sp_helpkeysp_helpconstraint检查他们对 FK 存在的看法?

这也应该能够告诉您是否确实定义了 FK。

select * from syskeys where depid = object_id([parenttablename]) and type = 2

关于FK的命名。这应该可以解决问题

CREATE TABLE
....
CONSTRAINT fk_mykey FOREIGN KEY (cntry_id) REFERENCES dbo.country(cntry_id)
...
于 2009-06-24T19:02:15.080 回答
1

目前我面前没有 12.5 DB,但我知道使用 Sybase Anywhere 和 Sybase IQ,您可以使用 Sybase Central 管理外键。如果您安装了 Sybase Central,请启动它选择您的表,然后在右侧查找名为 Constraints 或 Foreign Keys 的选项卡。如果你有它选择你想要删除的 FK,按删除然后右键单击左侧的表并选择 SAVE TABLE。

我希望这会有所帮助!

于 2009-06-29T20:04:51.297 回答
0

给约束赋值是很重要的,否则就会陷入这种繁琐的情况,那么:

您的外键创建语句应该是:

Alter table city 
  add constraint city_country_fk foreign key(cntry_id)
     references country(cntry_id);

然后,您可以简单地执行以下操作:

alter table dbo.city 
  drop constraint city_country_fk ;

干杯:)

于 2021-07-28T19:06:11.267 回答