Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Perché non riesco a trovare una chiave esterna usando la funzione OBJECT_ID()?

Potrebbe essere che la tua chiave esterna stia guardando la tabella non nello schema predefinito (probabilmente dbo ). In questo caso non vedrai object_id finché non specifichi lo schema, in questo modo:

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

In realtà, potresti avere più oggetti con lo stesso nome nel tuo database, ma all'interno di schemi diversi. OBJECT_ID(N'FK_Name', N'F') restituirà l'id dell'oggetto nello schema predefinito.

Puoi testarlo in questo modo:

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

sql fiddle demo