sql >> Database >  >> RDS >> Sqlserver

Waarom kan ik geen externe sleutel vinden met de functie OBJECT_ID()?

Het kan zijn dat uw externe sleutel naar de tabel kijkt die niet in het standaardschema staat (waarschijnlijk dbo ). In dit geval ziet u object_id . niet totdat u een schema opgeeft, zoals dit:

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

In feite zou u meerdere objecten met dezelfde naam in uw database kunnen hebben, maar binnen verschillende schema's. OBJECT_ID(N'FK_Name', N'F') retourneert de id van het object in het standaardschema.

Je kunt het als volgt testen:

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




  1. Voeg regeleinde in postgresql in bij het bijwerken van het tekstveld

  2. TSQL:niet-boolean type gespecificeerde fout bij gebruik van update in een trigger

  3. kunnen we in twee tabellen invoegen met een enkele SQL-instructie?

  4. Hibernate vult de kolom AUTO_INCREMENT niet als onderdeel van samengestelde PK, bug of anti-functie?