2
SQL Server 2008の外部キーは自動的に値でインデックスされますか?例えば。親テーブルのプライマリキー(または自動インクリメント)に値を追加すると、そのキーを参照する外部キーを持つテーブルは自動的に同じ値を持ちますか?または私はそれを明示的に行う必要がありますか?自動インデックスされるSQL Server 2008の外部キー
SQL Server 2008の外部キーは自動的に値でインデックスされますか?例えば。親テーブルのプライマリキー(または自動インクリメント)に値を追加すると、そのキーを参照する外部キーを持つテーブルは自動的に同じ値を持ちますか?または私はそれを明示的に行う必要がありますか?自動インデックスされるSQL Server 2008の外部キー
いいえ、子テーブルに外部キーを作成すると、親行が挿入されたときに外部キーが自動的に設定されません。これについて考えるなら理にかなっています。その学生がローンを持っていない場合はどのような -
CREATE TABLE dbo.Students
(
StudentID INT IDENTITY(1,1) PRIMARY KEY,
Name SYSNAME
);
CREATE TABLE dbo.StudentLoans
(
LoanID INT IDENTITY(1,1) PRIMARY KEY,
StudentID INT FOREIGN KEY REFERENCES dbo.Students(StudentID),
Amount BIGINT -- just being funny
);
何を示唆していることは、あなたがStudents
に行を追加する場合、システムが自動的にStudentLoans
に行を追加する必要があることですさんは次のようにあなたがテーブルを持っているとしましょう?学生がローンを持っている場合、その金額はどのくらいですか?システムは乱数を選ぶべきですか?
通常、このシナリオでは、学生とそのローンを同時に追加することになります。したがって、貸し出し金額と学生の名前を知っているなら、次のように言うことができます:
DECLARE
@Name SYSNAME = N'user962206',
@LoanAmount BIGINT = 50000,
@StudentID INT;
INSERT dbo.Students(Name)
SELECT @Name;
SELECT @StudentID = SCOPE_IDENTITY();
INSERT dbo.StudentLoans(StudentID, Amount)
SELECT @StudentID, @LoanAmount;
子テーブルの主キーを参照する外部キーにどのように値を追加しますか?私は学生を追加しました。学生ローンを持っていることを知っている学生ローンテーブルに、彼/彼女のプライマリキーの価値をどのように追加するのですか?**編集**ありがとう! btw LINQ To SQLでそのクエリが動作しますか? – user962206
例を試しましたか? 'SCOPE_IDENTITY()'は、最近挿入されたテーブルの 'IDENTITY'カラムから自動生成された値を取得する方法の1つです。 2つの異なる時間にこれをやっているのであれば、興味のある学生のPKを見つけて(どのように識別していますか?)、その後の挿入ステートメントでその値を使用する必要があります。 –
私はSCOPE_IDENTITYをまだ試していませんが、そのクエリはLINQ TO SQLに適用されますか? – user962206