gpt4 book ai didi

sql-server - 在 SQL Server (T-SQL) 中更改表时如何保留时间戳值?

转载 作者:搜寻专家 更新时间:2023-10-30 23:01:10 25 4
gpt4 key购买 nike

或者:如何将时间戳数据从一个表复制到另一个表?

使用 SQL Server 2008 并使用旧的设计文档,这些文档需要一个表以某种方式对列进行排序(最后是 timestamp 列,我猜这是因为使用 Excel 的时间SQL 数据库)我需要在表的中间添加一列,保持 timestamp 数据完整...

您知道如何指示 SQL Server 执行此操作吗?

示例 T-SQL 代码:

-- In the beginning...
CREATE TABLE TestTableA
(
[TestTableAId] [int] IDENTITY(1,1) NOT NULL,
[TestTableAText] varchar(max) NOT NULL,
[TestTableATimeStamp] [timestamp] NOT NULL
)

INSERT INTO TestTableA (TestTableAText) VALUES ('TEST')

-- 许多年过去了...

-- 现在我们需要向该表添加一列,但保留所有数据,包括时间戳数据。-- 附加要求:我们希望 SQL Server 将时间戳保留在列的最后。

CREATE TABLE TestTableB
(
[TestTableBId] [int] IDENTITY(1,1) NOT NULL,
[TestTableBText] varchar(max) NOT NULL,
[TestTableBInt] [int] NULL,
[TestTableBTimeStamp] [timestamp] NOT NULL
)

-- How do we copy the timestamp data from TestTableATimestamp to `TestTableBTimestamp`?

SET IDENTITY_INSERT [TestTableB] ON

-- Next line will produce errormessage:
-- Cannot insert an explicit value into a timestamp column. Use INSERT with a column list to exclude the timestamp column, or insert a DEFAULT into the timestamp column.

INSERT INTO [TestTableB] (TestTableBId, TestTableBText, TestTableBTimeStamp)
SELECT TestTableAId, TestTableAText, TestTableATimestamp
FROM TestTableA

SET IDENTITY_INSERT [TestTableB] OFF

GO

建议?

最佳答案

首先删除表 TestTableB,然后运行查询:

SELECT 
TestTableAId AS TestTableBId,
TestTableAText AS TestTableBText,
cast(null as int) as TestTableBInt,
TestTableATimestamp AS TestTableBTimeStamp
INTO TestTableB
FROM TestTableA

关于sql-server - 在 SQL Server (T-SQL) 中更改表时如何保留时间戳值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32437299/

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