Database 处理主键-外键表插入?

Database 处理主键-外键表插入?,database,foreign-keys,relational-database,primary-key,Database,Foreign Keys,Relational Database,Primary Key,假设我有两个表(主键->外键),其中主键表中的一条记录对应于外键中的多条记录,那么如果我想为主键表和外键表创建插入页(例如使用ASP.NET),如何获得主键值以将其插入到外键表中? (通常我会选择最大PK,但我很想找到更好的解决方案)我假设您使用的是SQL Server,因为您提到了ASP.NET的使用。在多用户系统中使用Max(PK)不是一个好主意,因为最终会得到不正确的主键值。也有资源问题需要考虑。一般来说,应该避免这种做法 有几种方法可以完成你想做的事情。一种方法是通过存储过程进行插入。用

假设我有两个表(主键->外键),其中主键表中的一条记录对应于外键中的多条记录,那么如果我想为主键表和外键表创建插入页(例如使用ASP.NET),如何获得主键值以将其插入到外键表中?
(通常我会选择最大PK,但我很想找到更好的解决方案)

我假设您使用的是SQL Server,因为您提到了ASP.NET的使用。在多用户系统中使用Max(PK)不是一个好主意,因为最终会得到不正确的主键值。也有资源问题需要考虑。一般来说,应该避免这种做法


有几种方法可以完成你想做的事情。一种方法是通过存储过程进行插入。用于创建主键行的存储过程将返回新行的Id值,然后可用于插入外键行。但不要使用Max(PK值)。使用该值。这假设您使用的是PK值的标识类型。您没有说明实际使用的是什么。

取决于所使用的数据库系统。但是
MAX()
通常是一个坏主意,因为它需要对
INSERT
SELECT
之间的表进行独占访问(通过序列化事务或交叉手指希望来实现),如果他使用的是MySQL,那么它将是最后一个\u INSERT\u ID()而不是SCOPE\u IDENTITY()