我的 table 有这种结构。

CREATE TABLE [dbo].[Word] (
    [WordId]       VARCHAR (20) NOT NULL,
    [CategoryId]   INT          DEFAULT ((1)) NOT NULL,
    PRIMARY KEY CLUSTERED ([WordId] ASC),
);

我想要做的是添加一个名为 Ascii 的列,其定义为 (ASCII([WordId]))
有没有办法可以添加它,然后在此列 + WordId + CategoryId 上创建索引?我也可以这样做并根据我已有的数据自动更新吗?

最佳答案

您可以通过制作计算列 persisted 来做到这一点

来自 MSDN


CREATE TABLE [dbo].[Word]
(
    [WordId]       VARCHAR (20) NOT NULL,
    [CategoryId]   INT          DEFAULT ((1)) NOT NULL,
    [Ascii]        as (ASCII([WordId])) persisted,
    PRIMARY KEY CLUSTERED ([WordId] ,[CategoryId],[Ascii] ),
);

要通过添加计算列来更改表,请使用此
ALTER TABLE [dbo].[Word] ADD [Ascii] AS (ASCII([WordId])) persisted;

关于sql - 我可以在计算列上创建索引吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36966138/

10-12 22:33