自动索引的SQL Server 2008外键
SQL Server 2008中的外键是否自动使用值编制索引?例如如果我在may父表的主键(或自动递增键)中添加一个值,则具有外键引用的表是否会自动具有相同的值?或者我必须明确地这样做 否,如果在子表中创建外键,则插入父行时不会自动填充该外键。如果你仔细想想,这是有道理的。假设您有一张如下所示的桌子:自动索引的SQL Server 2008外键,sql,sql-server-2008,relationship,Sql,Sql Server 2008,Relationship,SQL Server 2008中的外键是否自动使用值编制索引?例如如果我在may父表的主键(或自动递增键)中添加一个值,则具有外键引用的表是否会自动具有相同的值?或者我必须明确地这样做 否,如果在子表中创建外键,则插入父行时不会自动填充该外键。如果你仔细想想,这是有道理的。假设您有一张如下所示的桌子: CREATE TABLE dbo.Students ( StudentID INT IDENTITY(1,1) PRIMARY KEY, Name SYSNAME ); CREATE T
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
);
您的建议是,当您向学生
添加一行时,系统应自动向学生贷款
添加一行-但是如果该学生没有贷款怎么办?如果学生确实有贷款,金额应该是多少?系统应该选择一个随机数吗
通常,在这种情况下,您将同时添加一名学生和他们的贷款。因此,如果你知道贷款金额和学生姓名,你可以说:
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;
那么,如何向引用子表中主键的外键添加值?例如,我添加了一名学生,在知道他有学生贷款的情况下,我如何将他/她的主键的值添加到学生贷款表中?**编辑**谢谢!顺便问一下,该查询在LINQtoSQL中工作吗?您是否尝试过该示例
SCOPE_IDENTITY()
是从最近插入的表中的IDENTITY
列检索自动生成值的一种方法。如果您在两个不同的时间执行此操作,那么您需要找到您感兴趣的学生的PK(您如何识别他们?),然后在后续的insert语句中使用该值。我还没有尝试过范围标识it,该查询是否适用于LINQ to SQL?抱歉,我完全不知道,我不使用LINQ。您是否对这项技术进行了研究,并得出了应该使用它的合理结论?我怀疑如果您需要了解数据库,LINQ可能不是最好的方法。我明白了,虽然我们需要使用LINQ,但我认为我需要刷新有关数据库的内存。但不管怎样,这都是一个巨大的帮助。我理解为什么另一个表中的外键不应该递增。谢谢你@Aaron Bertrand