2012-05-11 9 views
6

を作成します。は、私は列にしてテーブルを作成するシステムテーブルへの外部キー

IdRole 
IdProcedure 

アイデアはIdProceduresys.objectsにFKであるということです。

私はこのクエリを作成する場合:

SELECT * 
FROM sys.objects 
WHERE type='p' 

を、それが正常に動作しますが、この1:

ALTER TABLE dbo.CORE_ProcedureXRole 
ADD CONSTRAINT FK_SysProcedure 
FOREIGN KEY (IdProcedure) 
REFERENCES sys.objects(object_id) 

私に語った:

外部キー 'FK_SysProcedure' 参照無効テーブル 'sys.objects'。

+8

'sys.objects'はテーブルではなくビューです。 FKをシステムオブジェクトに作成することはできません。 –

+0

okありがとう..もし私がそれをすることができるかどうかは確信していませんでした。 – davibq

+6

なぜあなたはこれをしたいですか? 1つは、新しいobject_idがランダムに割り当てられるため、ドロップ/再作成を防ぐことができます。おそらく、sys.objectsの外部キーを使用して解決したいと言っているのではなく、解決しようとしている問題を教えてください。 –

答えて

1

sys.objectsはテーブルではありません。独自のSQL Server形式で保存されたデータを基にしたシステムビューです。格納された名前が正しいことを確認する場合は、更新のためにTRIGGERを追加して、検査を処理するために挿入します。

関連する問題