在插入期间是否可以使用标识值?

时间:2018-01-23 05:11:52

标签: sql sql-server sql-server-2016

假设我有下表:

ID Name Custom_Field
1  Alex   1_custom
2  Bob    2_somethingelse
.......

我可以在一个sql语句中执行插入吗?我找不到任何允许我在插入时使用我的ID的功能。 IDINT IDENTITY(1,1) 我正在寻找这样的东西:

insert into table
values('Alex', ID_VALUE + '_custom')

2 个答案:

答案 0 :(得分:3)

如果您始终需要ID_custom等字段值,则可以创建computed column

CREATE TABLE SomeTable
(
    [id] int identity, 
    [name] varchar(20),
    CustomField AS CAST(id AS varchar(10)) + '_custom'
);

虽然您无法在其中插入值(并且您不必这样做)。所以你的插入语句如下所示:

INSERT INTO SomeTable
    ([name])
VALUES
    ('Alex'),
    ('Bob')
;

这是一个SQL小提琴:http://sqlfiddle.com/#!18/10cac/1

答案 1 :(得分:0)

你可以获得最后一个身份并增加1.像这样的东西

insert into table
 values('Alex', cast((select max(ID_VALUE )+1 from table) as nvarchar(10)) + '_custom')

sql server中有SCOPE_IDENTITY()函数,但只能在insert语句之后使用它。