sql-server - 设置两个主键,但为每个第一个主键值重置第二个主键 - SQL Server
问题描述
我正在尝试为产品创建评论部分。我正在为表设置两个主键, theCommentID
和 the 。但是我想要对主键做的事情如下:对于 each ,应该从头开始计数。所以对于,应该从 1 开始并递增,对于,也应该从 1 开始并递增,依此类推。同时是指向 Product 表的外键。ProductID
Comments
ProductID
CommentID
ProductID = 1
CommentID
ProductID = 2
CommentID
ProductID
有人可以指导我如何存档,这是一个好习惯还是存在更好的解决方法,除了制作两个主键?
谢谢!
解决方案
我会使用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 = ?
推荐阅读
- hibernate - OnetoMany 映射 JPA 中的 StackOverflow 异常
- angular - 无法解析服务的参数。这将成为 Angular 6.x 中的错误
- java - 需要协助设置 Java 的代理设置(JVM 启动器)
- spring - Auto Wire byType 如何在 Spring 中设置 bean?
- c# - 错误:FastReport.Utils.CompilerException
- couchdb - couchdb 可以在复制到云沙发时停止响应来自本地沙发数据库的请求吗?
- android - 带有 COUNT(*) AS 的 Room SQL 查询
- sql - 设计数据库实体和关系
- r - 使用 K-Means 聚类和 R 进行图像处理
- algorithm - 在树上循环