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;
然後我如何將一個值添加到引用我的子表中的主鍵的外鍵?例如,我添加了一個學生,如何知道他有學生貸款,我怎麼將他/她的主鍵的值添加到學生貸款表?** EDITED **謝謝!順便說一句,該查詢工作在LINQ To SQL? – user962206 2012-02-19 01:45:27
你試過這個例子嗎? 'SCOPE_IDENTITY()'是從最近插入的表中的'IDENTITY'列中檢索自動生成值的一種方法。如果你在兩個不同的時間這樣做,那麼你需要找到你感興趣的學生的PK(你如何識別它們?),然後在隨後的插入語句中使用該值。 – 2012-02-19 01:47:53
我還沒有試過SCOPE_IDENTITY呢,這個查詢是否適用於LINQ TO SQL? – user962206 2012-02-19 01:48:50