Удалите внешние ключи в sybase 12.5 - PullRequest
0 голосов
/ 24 июня 2009

У меня есть две таблицы:

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 существуют:

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)

Кто-нибудь знает, как бросить эти ключи?

Заранее спасибо

Ryan

Ответы [ 2 ]

2 голосов
/ 24 июня 2009
ALTER TABLE dbo.city DELETE FOREIGN KEY [enternameoftheforeignkeyhere]

В противном случае я не знаю, в чем может быть причина. Номер сообщения об ошибке означает, что он не может удалить его из syskeys. Но он нашел эти два стола в порядке, и вы тоже являетесь их владельцем.


Вы пытались sp_helpkey и sp_helpconstraint проверить, что они говорят о существовании ФК?

Это также должно быть в состоянии сказать вам, действительно ли определен FK.

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

Относительно именования ФК. Это должно сделать трюк

CREATE TABLE
....
CONSTRAINT fk_mykey FOREIGN KEY (cntry_id) REFERENCES dbo.country(cntry_id)
...
1 голос
/ 30 июня 2009

В данный момент у меня нет базы данных размером 12,5 БД, но я знаю, что с помощью Sybase Anywhere и Sybase IQ вы можете управлять внешними ключами с помощью Sybase Central. Если у вас установлен Sybase Central, запустите его, выберите таблицу, а затем справа найдите вкладку «Ограничения» или «Внешние ключи». Если он у вас есть, выберите FK, который вы хотите удалить, нажмите «Удалить», затем щелкните правой кнопкой мыши таблицу с левой стороны и выберите «Сохранить таблицу».

Надеюсь, это поможет!

...