sql >> Base de Datos >  >> RDS >> Sqlserver

¿Por qué no puedo encontrar una clave externa usando la función OBJECT_ID()?

Bueno, podría ser que su clave externa esté mirando a la tabla y no en el esquema predeterminado (probablemente dbo ). En este caso, no verá object_id hasta que especifique el esquema, así:

SELECT OBJECT_ID(N'<schema>.FK_Name', N'F')

En realidad, podría tener múltiples objetos con el mismo nombre en su base de datos, pero dentro de diferentes esquemas. OBJECT_ID(N'FK_Name', N'F') devolverá la identificación del objeto en el esquema predeterminado.

Puedes probarlo así:

create schema test
create table test.temp1 (id int primary key)
create table test.temp2 (id int)
go

alter table test.temp2 add constraint FK_temp foreign key(id) references test.temp1(id)

select object_id('FK_temp', 'F')  -- returns null
select object_id('test.FK_temp', 'F') -- returns object id

drop table test.temp2
drop table test.temp1
drop schema test

demostración de sql fiddle