表的 ALTER TABLE ALTER COLUMN 失败,因为它是账本表,并且该操作需要修改不可变的现有数据

问题描述 投票:0回答:1

我想将列从日期更新为日期时间。

当我运行查询时,我收到以下消息:

ALTER TABLE ALTER COLUMN 对于表“Transaction”失败,因为它是一个分类帐表,并且该操作需要修改不可变的现有数据。

执行 DbCommand 失败(40ms)[参数=[],CommandType='Text',CommandTimeout='30']
声明 @var0 系统名;
选择@var0 = [d].[名称]
来自 [sys].[default_constraints] [d]
内连接 [sys].[columns] [c] ON [d].[parent_column_id] = [c].[column_id] AND [d].[parent_object_id] = [c].[object_id]
WHERE ([d].[parent_object_id] = OBJECT_ID(N'[交易]') AND [c].[name] = N'日期');
IF @var0 IS NOT NULL EXEC(N'ALTER TABLE [事务] DROP CONSTRAINT [' + @var0 + '];');
ALTER TABLE [事务] ALTER COLUMN [日期] 日期时间 NOT NULL;

我明白问题所在,但我没有解决方案。

我必须删除数据库并从头开始吗?我需要使用相同的列名,因此创建另一列然后将数据复制到新列不是一个选项。

我似乎无法删除或更新相应的账本表及其记录。

推荐的方法是什么?使用分类帐表是否意味着我将永远无法删除或更改任何列?

任何评论或答案将不胜感激!

sql sql-server azure-sql-database ledger-tables
1个回答
0
投票

如果您创建了仅追加分类账表,您将无法更新或删除记录。只允许插入。您仍然可以删除或更改表中的列,但您需要考虑一些注意事项。

请参阅账本注意事项和限制

© www.soinside.com 2019 - 2024. All rights reserved.