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