una tablas restricción relaciones relacion puede llaves llave foreign foraneas foranea externa entre eliminar datos como columna clave borrar agregar sql-server tsql

sql-server - tablas - no se puede agregar restricción de clave externa



¿Cómo puedo soltar una clave externa en SQL Server? (8)

Creé una clave externa (en SQL Server) de la siguiente manera:

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

Luego ejecuto esta consulta:

alter table company drop column CountryID;

y obtengo este error:

Msg 5074, nivel 16, estado 4, línea 2
El objeto ''Company_CountryID_FK'' depende de la columna ''CountryID''.
Msg 4922, nivel 16, estado 9, línea 2
ALTER TABLE DROP COLUMN CountryID falló porque uno o más objetos acceden a esta columna

Lo he intentado, pero parece que no funciona:

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

¿Qué debo hacer para soltar la columna CountryID ?

Gracias.


¿Estás tratando de eliminar la restricción FK o la columna en sí?

Para soltar la restricción:

alter table company drop constraint Company_CountryID_FK

No podrá soltar la columna hasta que suelte la restricción.


Creo que esto te será útil ...

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)

Se eliminará la restricción de clave externa en función de la tabla y columna específicas.


Esto funcionará:

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


No sé MSSQL pero no sería:

alter table company drop **constraint** Company_CountryID_FK;


Primero compruebe la existencia de la restricción y luego suéltela.

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


También puede hacer clic con el botón derecho en la tabla, elegir modificar, luego ir al atributo, hacer clic derecho sobre él y elegir soltar la tecla principal.


Tratar

alter table company drop constraint Company_CountryID_FK alter table company drop column CountryID


alter table company drop constraint Company_CountryID_FK