Sql server 设置两个主键,但为每个第一个主键值重置第二个主键-SQL Server
我试图为产品做一个评论部分。我正在为Sql server 设置两个主键,但为每个第一个主键值重置第二个主键-SQL Server,sql-server,sql-server-2017,sql-server-2017-express,Sql Server,Sql Server 2017,Sql Server 2017 Express,我试图为产品做一个评论部分。我正在为Comments表设置两个主键,CommentID和ProductID。但是我想对主键做的是:对于每个ProductID,CommentID应该从一开始就开始计数。因此,对于ProductID=1,CommentID应该从1开始递增,对于ProductID=2,CommentID也应该从1开始递增,依此类推。同时,ProductID是指向产品表的外键 有人能指导我如何归档吗?除了制作两个主键之外,这是一种好的做法还是有更好的解决方法 谢谢大家! 我会使用IDE
Comments
表设置两个主键,CommentID
和ProductID
。但是我想对主键做的是:对于每个ProductID
,CommentID
应该从一开始就开始计数。因此,对于ProductID=1
,CommentID
应该从1开始递增,对于ProductID=2
,CommentID
也应该从1开始递增,依此类推。同时,ProductID
是指向产品表的外键
有人能指导我如何归档吗?除了制作两个主键之外,这是一种好的做法还是有更好的解决方法
谢谢大家! 我会使用
IDENTITY
列/序列(单峰):
并选择:
SELECT *,
ROW_NUMBER() OVER(ORDER BY comment_id) AS rn
-- if you really need consecutive numbers
FROM comments
WHERE product_id = ?
我会使用
IDENTITY
列/序列(单键):
并选择:
SELECT *,
ROW_NUMBER() OVER(ORDER BY comment_id) AS rn
-- if you really need consecutive numbers
FROM comments
WHERE product_id = ?
在你(错误地)使用术语之前,你应该了解术语的含义。一个表只能有一个主键。在你(错误地)使用术语之前,你应该了解术语的含义。一个表只能有一个主键。一个愚蠢的问题。在这种情况下如何插入?我的意思是,每次插入时是否必须指定PRoductID!参考文献有什么作用?它与外键有何不同?@Tinaira Yesm您必须指定ProductId<代码>引用是外键的内联版本。确定。但正如我所看到的,CommentID将独立于ProductID增加。因此,当我选择一个不同的产品来评论我现在理解你的代码时,它不会重新开始。您在select语句中添加的列只是与productid相关的最高commentid编号。起初有点让人困惑,因为我期待着其他的东西,但现在这让一个愚蠢的问题变得有意义。在这种情况下如何插入?我的意思是,每次插入时是否必须指定PRoductID!参考文献有什么作用?它与外键有何不同?@Tinaira Yesm您必须指定ProductId<代码>引用是外键的内联版本。确定。但正如我所看到的,CommentID将独立于ProductID增加。因此,当我选择一个不同的产品来评论我现在理解你的代码时,它不会重新开始。您在select语句中添加的列只是与productid相关的最高commentid编号。起初有点让人困惑,因为我期待着其他的东西,但现在它有了意义