0 t-sql sql-server identity insert sql-server-2012
我有一个名为 tab_stores 的表,它的结构如下所示
CREATE TABLE tab_stores
(
id_num INT IDENTITY(1, 1),
sName VARCHAR(20),
mySKey VARCHAR(20)
);
Run Code Online (Sandbox Code Playgroud)
现在,当我使用下面的查询在此表中插入值时,它会插入值并增加id_num+1,这工作正常。
INSERT tab_stores (sName, mySKey)
VALUES ('Store', 'Store');
Run Code Online (Sandbox Code Playgroud)
插入的数据是
1,Store,Store
Run Code Online (Sandbox Code Playgroud)
我想稍微修改一下,以便当我插入行时,自动递增的列值应该被后固定并添加到mySKey列中,所以结果应该是
1,Store,Store1
Run Code Online (Sandbox Code Playgroud)
我尝试使用下面的查询,但它不起作用 - 我得到
消息 207,级别 16,状态 1,服务器 49706b09f367,第 7 行
无效的列名称“id_num”
INSERT tab_stores (sName, mySKey)
VALUES ('Store', 'Store' + id_num);
Run Code Online (Sandbox Code Playgroud)
谁能帮帮我吗?谢谢
如果此规则始终适用 - 那么您有两个选择:
CREATE TABLE dbo.tab_stores
(
id_num INT IDENTITY(1, 1),
sName VARCHAR(20)
);
CREATE VIEW dbo.view_Stores
AS
SELECT
id_num, sName,
sName + CAST(id_num AS VARCHAR(10)) AS mySKey
FROM
dbo.tab_stores;
SELECT *
FROM dbo.view_Stores;
Run Code Online (Sandbox Code Playgroud)
CREATE TABLE dbo.tab_stores
(
id_num INT IDENTITY(1, 1),
sName VARCHAR(20),
mySKey AS sName + CAST(id_num AS VARCHAR(10)) PERSISTED
);
INSERT INTO dbo.tab_stores (sName)
VALUES ('Store'), ('StoreABC');
SELECT *
FROM dbo.view_Stores;
1,'Store','Store1'
2,'StoreABC','StoreABC2'
Run Code Online (Sandbox Code Playgroud)