sql >> データベース >  >> RDS >> Sqlserver

OBJECT_ID() 関数を使用して外部キーを見つけることができないのはなぜですか?

    外部キーがデフォルトのスキーマにないテーブルを参照している可能性があります (おそらく dbo )。この場合、object_id は表示されません。 次のようにスキーマを指定するまで:

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

    実際には、データベース内に同じ名前のオブジェクトを複数持つことができますが、スキーマは異なります。 OBJECT_ID(N'FK_Name', N'F') デフォルト スキーマのオブジェクトの ID を返します。

    次のようにテストできます:

    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 フィドルのデモ




    1. MySQLデータベースのリストとサーバーのバージョンを取得しますか?

    2. Perl+PostgreSQL--選択的な列から行への転置

    3. Oracleの仕様またはSQLの仕様? :外部キー制約を使用してテーブルを切り捨てます

    4. foreach値をAjaxに追加します