別のテーブル (部門) の主キーの既定の制約を使用して、列 (MSSQL 2005) をテーブル (従業員) に追加しようとしています。次に、この列をそのテーブルの FK にします。基本的に、DepartmentID が指定されていない場合、これにより、部門名に基づいて新しい従業員が基本部門に割り当てられます。
これは動作しません:
DECLARE @ErrorVar INT
DECLARE @DepartmentID INT
SELECT @DepartmentID = DepartmentID
FROM Department
WHERE RealName = 'RocketScience'
ALTER TABLE [Employee]
ADD [DepartmentID] INT NULL
CONSTRAINT [DepartmentIDOfAssociate] DEFAULT (@DepartmentIDAssociate)
SELECT @ErrorVar = @@Error
IF (@ErrorVar <> 0)
BEGIN
GOTO FATAL_EXIT
END
Production、Test、Development データベースは同期が取れなくなり、DepartmentName = 'RocketScience' の DepartmentID は同じである場合とそうでない場合があるため、単に DEFAULT (somenumber) とは言いたくありません。どの方法で問題に取り組んでも、「変数は ALTER TABLE ステートメントでは許可されていません」というメッセージが表示され続けます。
これを行う正しい方法は何ですか?selectステートメントもネストしてみましたが、「このコンテキストではサブクエリは許可されていません。スカラー式のみが許可されています。」
さらに、 {ALTER null} {Update values} {ALTER not null}の手順を実行
する代わりに、1 つのステートメントで列の値を入力できるのは本当に素晴らしいことです。WITH VALUES コマンドについて何か読んだことがありますが、それを機能させることができませんでした。ありがとう!!!