Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Защо не мога да намеря външен ключ с помощта на функцията OBJECT_ID()?

Ами възможно е вашият външен ключ да гледа към таблицата, а не към схемата по подразбиране (вероятно dbo ). В този случай няма да видите object_id докато не посочите схема, като тази:

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

Всъщност можете да имате множество обекти с едно и също име във вашата база данни, но в различни схеми. OBJECT_ID(N'FK_Name', N'F') ще върне идентификатор на обект в схемата по подразбиране.

Можете да го тествате по следния начин:

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




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PI() Примери в SQL Server

  2. SQL функции - факториел

  3. Как да използвате SQL Server HierarchyID чрез лесни примери

  4. Как автоматично да изтриете записи в sql сървър след определено време

  5. Надеждност на SqlDependency?