我有一个名为 tab_stores 的表,它的结构如下所示
CREATE TABLE tab_stores
(
id_num INT IDENTITY(1, 1),
sName VARCHAR(20),
mySKey VARCHAR(20)
);
现在,当我使用下面的查询在此表中插入值时,它会插入值并将
id_num
增加 +1,工作正常。
INSERT tab_stores (sName, mySKey)
VALUES ('Store', 'Store');
插入的数据是
1,Store,Store
我想稍微修改一下,以便当我插入行时,自动递增的列值应该被后固定并添加到
mySKey
列中,所以结果应该是
1,Store,Store1
我尝试使用下面的查询,但它不起作用 - 我明白了
消息 207,级别 16,状态 1,服务器 49706b09f367,第 7 行
无效的列名称“id_num”
INSERT tab_stores (sName, mySKey)
VALUES ('Store', 'Store' + id_num);
有人可以帮助我吗?谢谢你
如果此规则始终适用 - 那么您有两个选择:
CREATE VIEW dbo.view_Stores
AS
SELECT
id_num, sName,
CONCAT(sName, id_num) AS mySKey
FROM
dbo.tab_stores;
SELECT *
FROM dbo.view_Stores;
CREATE TABLE dbo.tab_stores
(
id_num INT IDENTITY(1, 1),
sName VARCHAR(20),
mySKey AS CONCAT(sName, id_num) PERSISTED
);
INSERT INTO dbo.tab_stores (sName)
VALUES ('Store'), ('StoreABC');
SELECT *
FROM dbo.view_Stores;
1,'Store','Store1'
2,'StoreABC','StoreABC2'
从
tab_scores
获取最大 id_num 值并与“Store”文本连接。
INSERT tab_stores (sName, mySKey)
VALUES ('Store', 'Store' + convert(varchar,(select isnull(max(id_num) + 1, 1) from tab_stores)));