设置两个主键,但为每个第一个主键值重置第二个主键-SQL Server

时间:2018-07-09 19:29:26

标签: sql-server sql-server-2017 sql-server-2017-express

我正在尝试对产品发表评论。我正在为aws dynamodb scan --table-name my-table --select ALL_ATTRIBUTES --page-size 500 --max-items 100000 表设置两个主键,CommentIDProductID。但是我要使用的主键如下:对于每个CommentsProductID应该从头开始计数。因此,对于CommentIDProductID = 1应该从1开始递增,对于CommentIDProductID = 2也应该从1开始递增,依此类推。同时CommentID是指向Product表的外键。

有人可以指导我如何进行存档吗?这是一个好习惯还是有一个更好的解决方法,除了制作两个主键之外?

谢谢!

1 个答案:

答案 0 :(得分:2)

我将使用IDENTITY列/序列(单个PK):

CREATE TABLE comments(comment_id INT IDENTITY(1,1) PRIMARY KEY,  
                      product_id INT REFERENCES Product(product_id),
                      some_text VARCHAR(1000),
                      -- ...
                      );

然后选择:

SELECT *,
   ROW_NUMBER() OVER(ORDER BY comment_id) AS rn 
  -- if you really need consecutive numbers
FROM comments
WHERE product_id = ?