gpt4 book ai didi

sql-server - 如何在不使用 IDENTITY 的情况下自动递增列?

转载 作者:行者123 更新时间:2023-12-02 10:03:17 25 4
gpt4 key购买 nike

我正在创建一个包含两列并希望自动递增的表。一列是主键,因此我在其上使用 IDENTITY 关键字。另一列将用于跟踪表中项目的用户定义的“排序顺序”。每当用户移动一个项目时,其“排序顺序”就会与另一个元素的值交换。但是,当将项目插入表中时,插入的项目应始终自动分配高于表中任何其他值的排序顺序值。这是表创建脚本的简化版本:

CREATE TABLE [AnswerRow] (
[AnswerRowId] [int] IDENTITY(1,1) NOT NULL,
[SortOrder] [int] NOT NULL,
[IsDeleted] [bit] NOT NULL CONSTRAINT [DF_AnswerRow_IsDeleted] DEFAULT 0,
CONSTRAINT [PK_AnswerRow] PRIMARY KEY CLUSTERED ([AnswerRowId] asc)
)

使 SortOrder 列自动递增的最佳方法是什么,就像 AnswerRowId 列一样(但之后仍然能够修改排序顺序值)?

最佳答案

我不确定这是否是 @Stephen Wrighton 的初衷,但我认为您可以有一个插入触发器,利用为 AnswerRowId 生成的 IDENTITY 值:

CREATE TRIGGER [dbo].[AnswerRowInsertTrigger]
ON [dbo].[AnswerRow]
AFTER INSERT
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;

UPDATE a SET a.SortOrder = a.AnswerRowId
FROM AnswerRow a JOIN inserted i ON a.AnswerRowId = i.AnswerRowId

END

关于sql-server - 如何在不使用 IDENTITY 的情况下自动递增列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5069548/

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