J'ai créé une clé étrangère (dans SQL Server) en:
alter table company add CountryID varchar(3);
alter table company add constraint Company_CountryID_FK foreign key(CountryID)
references Country;
Je lance alors cette requête:
alter table company drop column CountryID;
et j'obtiens cette erreur:
Msg 5074, niveau 16, état 4, ligne 2
L'objet 'Company_CountryID_FK' dépend de la colonne 'CountryID'.
Msg 4922, niveau 16, état 9, ligne 2
ALTER TABLE DROP COLUMN CountryID a échoué car un ou plusieurs objets accèdent à cette colonne
J'ai essayé cela, mais cela ne semble pas fonctionner:
alter table company drop foreign key Company_CountryID_FK;
alter table company drop column CountryID;
Que dois-je faire pour supprimer la colonne CountryID
?
Merci.
Essayer
alter table company drop constraint Company_CountryID_FK
alter table company drop column CountryID
Cela fonctionnera:
ALTER TABLE [dbo].[company] DROP CONSTRAINT [Company_CountryID_FK]
Je pense que cela vous sera utile ...
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)
Il supprimera la contrainte de clé étrangère basée sur une table et une colonne spécifiques.
Vérifiez d'abord l'existence de la contrainte, puis supprimez-la.
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
alter table company drop constraint Company_CountryID_FK
Je ne connais pas MSSQL mais ne serait-ce pas:
alter table company drop **constraint** Company_CountryID_FK;
Vous pouvez également cliquer avec le bouton droit de la souris sur la table, choisir Modifier, puis accéder à l'attribut, cliquer dessus avec le bouton droit de la souris et choisir Supprimer la clé primaire.
Essayez-vous de supprimer la contrainte FK ou la colonne elle-même?
Pour supprimer la contrainte:
alter table company drop constraint Company_CountryID_FK
Vous ne pourrez pas supprimer la colonne tant que vous n’aurez pas supprimé la contrainte.