Cad*_*nge 2 sql t-sql database sql-server
假设我有一个表定义如下:
CREATE TABLE SomeTable
(
P_Id int PRIMARY KEY IDENTITY,
CompoundKey varchar(255) NOT NULL,
)
Run Code Online (Sandbox Code Playgroud)
CompoundKey是一个字符串,其主键P_Id连接到末尾,如Foo00000001,它来自"Foo"+ 00000001.此时,插入此表的条目分两步进行.
我正在寻找一种方法来完全避免第二次更新,并使用一个insert语句完成所有操作.这可能吗?我正在使用MS SQL Server 2005.
ps我同意这不是世界上最明智的模式,这个模式将被重构(并正确规范化)但我现在无法对模式进行更改.
你可以使用计算列; 将架构更改为:
CREATE TABLE SomeTable
(
P_Id int PRIMARY KEY IDENTITY,
CompoundKeyPrefix varchar(255) NOT NULL,
CompoundKey AS CompoundKeyPrefix + CAST(P_Id AS VARCHAR(10))
)
Run Code Online (Sandbox Code Playgroud)
这样,SQL Server将自动为您提供新列中的复合键,并自动为您维护它.您可能还希望查看PERSIST计算列的关键字,这将导致SQL Server实现数据文件中的值,而不是必须动态计算它.您也可以根据需要为列添加索引.
| 归档时间: |
|
| 查看次数: |
172 次 |
| 最近记录: |