2009-06-24 150 views
0

我有两个表:删除外键在Sybase 12.5

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 constrait这样我就可以再删除该表。

的FK definitley存在:

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

(DB名称被遮挡)

但两者

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) 

是否有人知道如何删除这些键?

预先感谢您

瑞安

回答

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) 
... 
+0

感谢您的回答。我的foriegn键实际上没有名称(至少不是我明确设置的名称),即 FOREIGN KEY(cntry_id)REFERENCES dbo.country(cntry_id) 实际上并不命名该键。 我已经试过 FOREIGN KEY fk_mykey(cntry_id)参考dbo.country(cntry_id) 但thatgives语法错误。 你知道我如何'命名'FK吗? 谢谢 – Ryan 2009-06-25 06:48:53

1

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

我希望有帮助!