0

私は2つのテーブルを持っています:

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 ....

(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)

これらのキーを削除する方法を知っている人はいますか?

前もって感謝します

ライアン

4

3 に答える 3

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

そうでなければ、何が原因なのかわかりません。エラー メッセージの番号は、syskeys から削除できなかったことを意味します。しかし、彼は 2 つのテーブルが問題なく、あなたもテーブルの所有者であることを発見しました。


FK の存在について彼らが言っていることを確認しようsp_helpkeyとしましたか?sp_helpconstraint

これは、本当に 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 がインストールされている場合は、起動してテーブルを選択し、右側で [制約] または [外部キー] というタブを探します。削除する FK を選択した場合は、[Delete] を押してから左側のテーブルを右クリックし、[SAVE TABLE] を選択します。

それが役立つことを願っています!

于 2009-06-29T20:04:51.297 に答える