2012-01-19 11 views
0

私は2つのテーブル、プロセス(PK Process_Id)PROCESS_STAGE(PK Stage_Id, FK Process_Id)でデータベースを持っています。Microsoft SQL Server Management Studioでリレーショナルの外部キー制約を適用する方法は?

は、少なくとも私はこれを設定していると思う - 私が持っている外部キー関係ダイアログボックスで

  • 外部キーベーステーブル:PROCESS_STAGE
  • 外部キー列:Process_Id
  • プライマリ/ユニークキーベーステーブル:プロセス,
  • プライマリ/ユニークキー列:Process_Id

また、私はレプリケーションのために強制を設定し、外部キー制約を「はい」に設定しました。何

は私が行う必要があるプロセス PROCESS_STAGEからの参照を持っているから

  1. 削除項目:

    しかし、私はまだこの関係を壊し、次のことを行うことができますこれを修正しますか?

    ありがとうございます!これでも失敗する場合

答えて

1

ALTER TABLE PROCESS_STAGE WITH CHECK ADD 
    CONSTRAINT FK_PROCESSTAGE_PROCESS 
      FOREIGN KEY (Process_Id) REFERENCES PROCESS (Process_Id) 

外部キーを作成するためにSQLを使用してみてください、テーブルスキーマ/所有者を見て:あなたは、複数のテーブルを有することができ、あなたは間違ったものを使用しています。例:

  • dbo.PROCESS_STAGE
  • deed02392.PROCESS_STAGE
+0

私はこの@gbnを試しましたが、私はこのエラーを取得保管: メッセージ547、レベル16、状態0、行1 をALTER TABLEステートメントは、FOREIGN KEY制約 "FK_PROCESSTAGE_PROCESS"と競合しました。競合は、データベース "A_A"、テーブル "dbo.PROCESS"、列 "Process_Id"で発生しました。 データベースのテーブルツリーに「dbo。*」という名前のテーブルしか表示されないため、正しいテーブルを使用する必要があります。 – deed02392

+0

@ deed02392:あなたがdboしか持っていないなら、これは良いことです。 GUIを使用しているときに同じエラーが発生していると思われます。これは私が上記のようなSQLを発行します。 FKは決して作成されないので失敗する – gbn

+0

わからないのですか?すでに存在しているために作成できないと示唆しているようですが、どこにも表示されません。そうした場合、関係を壊すレコードを削除できないはずです。 – deed02392

関連する問題