gpt4 book ai didi

sql-server-2005 - 将毫秒添加到 TSQL INSERT INTO 中的日期时间

转载 作者:行者123 更新时间:2023-12-04 07:06:03 27 4
gpt4 key购买 nike

我正在执行 INSERT INTO 查询以初始化新表。
主键是 RFQ_ID 和 Action_Time

如何为新记录的每个 Action_Time 添加 1 毫秒以避免“违反 PRIMARY KEY 约束”

INSERT INTO QSW_RFQ_Log
(RFQ_ID, Action_Time, Quote_ID)
SELECT RFQ_ID, GETDATE() AS Action_Time, Quote_ID, 'Added to RFQ on Initialization' AS Note
FROM QSW_Quote

最佳答案

我认为真正的问题是 RFQ_ID, Action_Time不应该是主键。创建一个 surrogate主键并在 RFQ_ID, Action_Time 上放置一个非唯一索引.

更新 :如果你真的想坚持你现有的设计,你可以按照你的要求做,但在每行之间使用 10 毫秒而不是 1 毫秒,以补偿日期时间的低精度。您可以使用行号来确​​定要添加多少毫秒,以便为每一行获得不同的时间戳:

INSERT INTO QSW_RFQ_Log
(RFQ_ID, Action_Time, Quote_ID, Note)
SELECT
RFQ_ID,
DATEADD(millisecond, 10 * ROW_NUMBER() OVER (ORDER BY Quote_ID), GETDATE()) AS Action_Time,
Quote_ID,
'Added to RFQ on Initialization' AS Note
FROM QSW_Quote

关于sql-server-2005 - 将毫秒添加到 TSQL INSERT INTO 中的日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2625178/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com