gpt4 book ai didi

sql - 有没有更好的方法通过索引而不是通过列名更新数据库?

转载 作者:行者123 更新时间:2023-12-02 09:13:41 25 4
gpt4 key购买 nike

enter image description here

上面是我的数据库的屏幕截图,

  • 每一行代表一个任务
  • ReviewedTimes表示任务被审核的次数,最多可以设置为9。
  • FirstReview、SecondReview ... TenthReview 表示审核此给定任务的DateTime

我目前的方法是:

  1. 对于给定任务,读取其 ReviewedTimes 列值,N
  2. 使用几 block if-else(或 switch)语句,更新 (N+1)thReview 列。

例如,对于给定任务,其 ReviewedTimes 列显示为 3,我将使用新的 DateTime 值更新 FourthReview 列。

是否有更优雅的方式来实现相同的目标?我在想:

  • 如果我能以某种方式将 FirstReviewSecondReview ... TenthReview 枚举为 1、2 ... 10
  • 根据 ReviewedTimesN,我可以分别更新列 N + 1

最佳答案

正如我在上面的评论中所建议的,任务与评论具有一对多的关系,要执行我在 SQL Server 中建议的操作,您需要首先从任务表中删除所有评论列:

 ALTER TABLE [dbo].[Tasks]
DROP COLUMN [FirstReview], DROP COLUMN [SecondReview], etc...

然后创建一个名为 Review 的新表,该表具有指向 Task 表主键的外键,假设您在 Tasks 中有一个名为 TaskId 的 Identity 列:

 CREATE TABLE [dbo].[Reviews] ([ReviewId] INT NOT NULL Identity(1, 1) PRIMARY KEY, [TaskId] INT NOT NULL References [dbo].[Tasks]([TaskId]), [TimeStamp] DateTime NOT NULL)

现在,当有人去审阅某个任务项时,您首先会在给定任务 ID 的审阅表上使用 COUNT() 来检查是否已达到审阅限制,如果尚未达到,则插入一个Review 表中任务审核的新记录,其中任务 ID 作为 TaskID 列值,并使用 CURRENT_TIMESTAMP 返回审核的日期时间。如果您要跟踪审阅该任务的人员,则可以使用用户 ID 的外键添加另一列以进行审阅,但这只是另一个建议。

关于sql - 有没有更好的方法通过索引而不是通过列名更新数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49199122/

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