SQL中PERSISTED关键字

PERSISTED 
指定 SQL Server 数据库引擎将在表中物理存储计算值,而且,当计算列依赖的任何其他列发生更新时对这些计算值进行更新。将计算列标记为 PERSISTED,可允许您对具有确定性、但不精确的计算列创建索引。有关详细信息,请参阅为计算列创建索引。用作已分区表的分区依据列的所有计算列都必须显式标记为 PERSISTED。指定 PERSISTED 时,computed_column_expression 必须具有确定性。
create table orders
(
orderid int not null,
price money not null,
quantity int not null,
orderdate datetime not null,
total as price*quantity ,
total2 as Price * quantity persisted,
shipedate as dateadd (day,7,orderdate)
)
insert into orders (orderid,price,quantity,orderdate) values (1,2,6,'2008-8-8')

 

转载于:https://www.cnblogs.com/duqingsong/p/3239273.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
这个错误是由于在计算列上创建了不符合要求的约束而导致的。 根据错误消息,只有唯一约束或主键约束可以在计算列上创建,而检查约束、外键约束和非空约束需要计算列被定义为持久性列。 您可以通过以下几种方式来解决此问题: 1. 如果您要在计算列上创建唯一约束或主键约束,请确保计算列是唯一的,并将其定义为持久性列。例如: ``` CREATE TABLE [Table_Name] ( [Column1] INT NOT NULL, [Column2] AS ([Column1] * 2) PERSISTED UNIQUE, CONSTRAINT [PK_Table_Name] PRIMARY KEY CLUSTERED ([Column2]) ); ``` 在上面的示例,我们在创建计算列 `[Column2]` 时,使用了 `PERSISTED` 关键字,将其定义为持久性列,并在该列上创建了唯一约束。 2. 如果您要在计算列上创建检查约束、外键约束或非空约束,请先将计算列定义为持久性列。例如: ``` ALTER TABLE [Table_Name] ADD [Column2_Persisted] AS ([Column1] * 2) PERSISTED; ALTER TABLE [Table_Name] ADD CONSTRAINT [CK_Table_Name] CHECK ([Column2_Persisted] > 0); ALTER TABLE [Table_Name] ADD CONSTRAINT [FK_Table_Name] FOREIGN KEY ([Column2_Persisted]) REFERENCES [Other_Table_Name] ([Other_Column]); ``` 在上面的示例,我们先创建了一个持久性计算列 `[Column2_Persisted]`,然后在该列上创建了检查约束和外键约束。 请注意,如果您已经创建了计算列并且未将其定义为持久性列,则需要先删除该列并重新创建它时将其定义为持久性列,或者使用 `ALTER TABLE` 语句将其更改为持久性列。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值