我有两张桌子:
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 ....
(数据库名称模糊)
但两者
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)
有人知道如何放下这些钥匙吗?
提前谢谢
赖安
答案 0 :(得分:2)
ALTER TABLE dbo.city DELETE FOREIGN KEY [enternameoftheforeignkeyhere]
否则我不知道可能是什么原因。错误消息的编号意味着他无法从syskeys中删除它。但他发现这两张桌子都没问题,你也是桌子的主人。
您是否尝试sp_helpkey
和sp_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)
...
答案 1 :(得分:1)
目前我没有12.5 DB的数据,但我知道Sybase Anywhere和Sybase IQ可以使用Sybase Central管理外键。如果安装了Sybase Central,请将其激活选择您的表,然后在右侧查找名为Constraints或Foreign Keys的选项卡。如果您选择要删除的FK,请按删除,然后右键单击左侧的表并选择保存表。
我希望有所帮助!
答案 2 :(得分:0)
给constraint赋值很重要,不然会陷入这种麻烦的境地,然后:
您的外键创建语句应该是:
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 ;
干杯:)