it-swarm-tr.com

Yabancı bir anahtarı SQL Server'da nasıl bırakabilirim?

Bir yabancı anahtar (SQL Server'da) tarafından yarattım:

alter table company add CountryID varchar(3);
alter table company add constraint Company_CountryID_FK foreign key(CountryID) 
references Country;

Sonra bu sorguyu çalıştırdım:

alter table company drop column CountryID;

ve bu hatayı alıyorum:

Mesaj 5074, Seviye 16, Durum 4, Satır 2
'Company_CountryID_FK' nesnesi 'CountryID' sütununa bağlı.
Ms 4922, Seviye 16, Eyalet 9, Satır 2
ALTER TABLE DROP COLUMN Ülke Kimliği başarısız oldu, çünkü bir veya daha fazla nesne bu sütuna erişti

Bunu denedim, ancak işe yaramadı gibi görünüyor:

alter table company drop foreign key Company_CountryID_FK; 
alter table company drop column CountryID;

CountryID sütununu bırakmak için ne yapmam gerekiyor?

Teşekkürler.

188
mmattax

Deneyin

alter table company drop constraint Company_CountryID_FK


alter table company drop column CountryID
291
Mike

Bu çalışacak:

ALTER TABLE [dbo].[company] DROP CONSTRAINT [Company_CountryID_FK]
46
Jared

Bence bu sana yardımcı olacak ...

DECLARE @ConstraintName nvarchar(200)
SELECT 
    @ConstraintName = KCU.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC 
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU
    ON KCU.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG  
    AND KCU.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA 
    AND KCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
WHERE
    KCU.TABLE_NAME = 'TABLE_NAME' AND
    KCU.COLUMN_NAME = 'TABLE_COLUMN_NAME'
IF @ConstraintName IS NOT NULL EXEC('alter table TABLE_NAME drop  CONSTRAINT ' + @ConstraintName)

Belirli tablo ve sütuna göre yabancı Anahtar Kısıtlamasını siler.

20
Samir Savasani

İlk önce kısıtlamanın var olup olmadığını kontrol edin, sonra bırakın.

if exists (select 1 from sys.objects where name = 'Company_CountryID_FK' and type='F')
begin
alter table company drop constraint  Company_CountryID_FK
end
19
Naeem Iqbal
alter table company drop constraint Company_CountryID_FK
10
boes

MSSQL'i tanımıyorum ama öyle olmaz:

alter table company drop **constraint** Company_CountryID_FK;
4
Dave Costa

Ayrıca masaya sağ tıklayıp modifiye etmeyi seçebilir, ardından niteliğe gidin, sağ tıklayıp açılan birincil anahtarı seçebilirsiniz.

1

FK kısıtlamasını veya sütunun kendisini düşürmeye mi çalışıyorsunuz?

Kısıtlamayı bırakmak için:

alter table company drop constraint Company_CountryID_FK

Kısıtlamayı bırakana kadar sütunu bırakamazsınız.

1
Philip Wade