如何在SQL Server中创建一个非id且可以复制的增量列



我有一个表,其中手工输入了许多记录。通过导航,需要能够按照它们被添加的顺序进行排序。到目前为止,我有一个名为ID的递增标识列,它是一个主键。但由于它是主键,列不能复制,我得到错误"字段'ID'不能修改"每次我尝试输入一个新的记录。我是否可以拥有另一种可以增加和复制的数据类型?如果其中一些具有相同的ID值,这并不重要。我只需要把这些记录按添加时间的一般顺序排列。

为了添加id列,我首先这样做:

alter table accnt add ID int identity(1,1) not null

但是我不希望它是主键,所以我尝试了这个,没有运气:

alter table accnt add ID int numeric(1,1)

alter table accnt add ID int varchar(1,1)

都没有运气。我怎样才能完成我想做的事情?

如果您想确保您可以按照添加的顺序对它们进行排序,只需添加一个日期时间字段并使默认值为GETDATE()

ALTER TABLE acct
ADD CreateDate datetime DEFAULT GETDATE()

现在你可以在CreateDate

下订单了关于SQL Server默认日期时间戳的更多信息

编辑:根据下面的评论,这是你如何通过一个触发器来做到这一点(更多信息:https://msdn.microsoft.com/en-us/library/ms189799.aspx)

CREATE TRIGGER [dbo].[AcctInsert]
ON [dbo].[Acct]
FOR INSERT
AS
BEGIN
    SET NOCOUNT ON
    UPDATE Acct 
    SET CreateDate = GETDATE()
    WHERE acctId in (
        select 
            acctId
        FROM Inserted
    )
END

与其按照特定的顺序插入它们,不如考虑使用select语句以特定的顺序使用它们。添加表中行的顺序对您想要做的事情影响不大。您的标识ID列可以告诉您它们的添加顺序,例如:

Select ID
FROM accnt
ORDER BY ID ASC
Select ID
FROM accnt
ORDER BY ID DESC

相关内容

  • 没有找到相关文章

最新更新