Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Dlaczego nie mogę znaleźć klucza obcego za pomocą funkcji OBJECT_ID()?

Może być tak, że twój klucz obcy szuka tabeli nie w domyślnym schemacie (prawdopodobnie dbo ). W takim przypadku nie zobaczysz object_id dopóki nie określisz schematu, w ten sposób:

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

W rzeczywistości możesz mieć wiele obiektów o tej samej nazwie w swojej bazie danych, ale w różnych schematach. OBJECT_ID(N'FK_Name', N'F') zwróci id obiektu w domyślnym schemacie.

Możesz to przetestować w ten sposób:

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

demonstracja skrzypiec sql




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapytanie SQL do porównania sprzedaży produktów według miesiąca

  2. Jak mogę zachować tagi CDATA podczas przechowywania wyników zapytania w zmiennej XML?

  3. Jaki jest najlepszy sposób na skopiowanie bazy danych?

  4. SQL Server:Niepowodzenie zapytania XPATH

  5. Włączyć IDENTITY_INSERT w Entity Framework, SQL Server 2008?