gpt4 book ai didi

azure - 如何修改 SQL Server 2016 或 Azure 中的时态表?

转载 作者:行者123 更新时间:2023-12-05 01:02:08 24 4
gpt4 key购买 nike

我已经在 SQL Azure 中创建了一些时态表,但我不知道如何修改它们。添加新列或修改现有列的最佳方法是什么?

最佳答案

MSDN有很多例子,在早期版本的 CTP 中,如果不将 system_versioning 设置为 off,则无法更改临时表。但是从 CTP3 开始,您可以这样做...这里有一些示例..

ALTER TABLE dbo.Department 
ALTER COLUMN DeptName varchar(100);

ALTER TABLE dbo.Department
ADD WebAddress nvarchar(255) NOT NULL
CONSTRAINT DF_WebAddress DEFAULT 'www.mycompany.com';

ALTER TABLE dbo.Department
ADD TempColumn INT;

GO

ALTER TABLE dbo.Department
DROP COLUMN TempColumn;


/* Setting IsHidden property for period columns.
Use ALTER COLUMN <period_column> DROP HIDDEN to clear IsHidden flag */


ALTER TABLE dbo.Department
ALTER COLUMN SysStartTime ADD HIDDEN;

ALTER TABLE dbo.Department
ALTER COLUMN SysEndTime ADD HIDDEN;

MSDN 还建议在事务中进行任何方案更改,如下所示。

BEGIN TRAN 
---set system versioning to off
ALTER TABLE [dbo].[CompanyLocation] SET (SYSTEM_VERSIONING = OFF);
ALTER TABLE [CompanyLocation] ADD Cntr INT IDENTITY (1,1);
ALTER TABLE [dbo].[CompanyLocationHistory] ADD Cntr INT NOT NULL DEFAULT 0;
--specifying history table is needed with out which ,SQL adds a new history table
ALTER TABLE [dbo].[CompanyLocation]
SET
(
SYSTEM_VERSIONING = ON (HISTORY_TABLE = [dbo].[CompanyLocationHistory])
);
COMMIT ;

您可能想知道为什么我们需要关闭系统版本控制,正如我上面所说,从 ctp3.0 开始不需要它就可以完成,这是因为有一些限制..

您不能使用直接 ALTER 来更改以下架构。对于这些类型的更改,请设置 SYSTEM_VERSIONING = OFF。

  1. Adding a computed column

  2. Adding an IDENTITY column

  3. Adding a SPARSE column or changing existing column to be SPARSEwhen the history table is set to DATA_COMPRESSION = PAGE or DATA_COMPRESSION = ROW, which is the default for the history table.

  4. Adding a COLUMN_SET

  5. Adding a ROWGUIDCOL column or changing existing column to be ROWGUIDCOL

关于azure - 如何修改 SQL Server 2016 或 Azure 中的时态表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36274830/

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