How to alter table?

7 отговора 293 прегледа
#1

How to alter table?

Ima li nachin da se dobavi foreign key, primary key na veche suzdadena
tablica? Ili da se iztrie foreign key?

Отговор
в отговор на chovek #2

Re: How to alter table?

има ;-)


p.s. задавай по-конкретни въпроси за да получиш по-конкретни отговори - например за каква база става дума

Отговор
в отговор на phpGuru #3

Re: How to alter table?

bazata e interbase.
interesuva me konkretno SQL kostrukciata, s koiato tova moze
da stane. i kak se trie foreign key. neshto kato: drop foreign key

Отговор
в отговор на chovek #4

find foreign key

kak moga da razbera dali kum tablica sushtestvuva foreign key

Отговор
в отговор на phpGuru #5

Re: How to alter table?

Ако пише и на български вместо на маймунски, вероятността да получи отговор се повишава

Отговор
в отговор на chovek #6

Re: find foreign key

USE ImotiMain
DECLARE @name nvarchar(200)
DECLARE CUR CURSOR FOR
SELECT name FROM sysobjects WHERE id in (SELECT constid FROM sysforeignkeys WHERE
rkeyid in (SELECT id FROM sysobjects WHERE name in ('tblOffers')) )
OPEN CUR
FETCH NEXT FROM CUR
INTO @name
WHILE @@FETCH_STATUS = 0
BEGIN
declare @tname nvarchar(100)
set @tname = (SELECT name FROM sysobjects WHERE id = (SELECT fkeyid FROM sysforeignkeys WHERE constid = (SELECT id FROM sysobjects WHERE name = @name)))
declare @alter nvarchar(200)
SET @alter = 'alter table ' + @tname + ' drop constraint ' + @name
EXEC sp_executesql @alter
FETCH NEXT FROM CUR INTO @name
END
CLOSE CUR
DEALLOCATE CUR

Отговор
в отговор на i #7

открих начина

Тази SQL конструкция за Interbase става ли?
Беше ми трудно да разбера какво прави.

Намерих следния начин да открия дали в дадена Interbase таблица
има foreign key:
SELECT * FROM RDB$DEPENDENCIES
WHERE (RDB$DEPENDED_ON_NAME='MEDNAP')and(RDB$FIELD_NAME='FIDAM')

Interbase си прави тези таблици с $, които са със служебна информация.
В тях може да се правят обикновени селекти и да се разбере всичко за структурата на таблица. И е много лесно; ако някой е закъсал като мен... :)

Отговор
в отговор на chovek #8

Re: открих начина

Да, действително това е пътя за получаване на информация, но точно за foreign key тази заявка няма да ти свърши работа. По-добре пробвай следното:
За да получиш имената на всички foreign keys за дадена таблица 'MY_TABLE' :
select rdb$constraint_name from rdb$relation_constraints where rdb$relation_name='MY_TABLE' and rdb$constraint_type='FOREIGN KEY'
За да получиш описанието на всички foreign keys за дадена таблица 'MY_TABLE' :
select a.*
from rdb$ref_constraints a, rdb$relation_constraints b
where a.rdb$constraint_name=b.rdb$constraint_name
and b.rdb$relation_name='MY_TABLE' and b.rdb$constraint_type='FOREIGN KEY'

И така нататък в този дух.

PS
Сега погледнах, че ти всъщност питаш как да добавиш foreign key
Това не бива да го правиш директно със системните таблици. За това си има
ALTER TABLE табл ADD CONSTRAINT име_на_фор.кей FOREIGN KEY (по_поле) REFERENCES маст.табл. (поле);

Редактирано от NDeu на

Отговор