Sql server Perl,SQL Server使用@@IDENTITY

Sql server Perl,SQL Server使用@@IDENTITY,sql-server,perl,Sql Server,Perl,我有一个带有标识列的SQL Server表,设置为autoincrement 下面代码中的insert是用Perl编码的,在while循环中,fetchrow\u array()调用在@row数组中不返回任何数据 如何最好地检索标识值以在后续SQL语句中使用 my $term_sql = "INSERT INTO reminder_term(site, name, description, localization) OUTPUT \@\@IDENTITY VALUES(?,?,?,?

我有一个带有标识列的SQL Server表,设置为autoincrement

下面代码中的insert是用Perl编码的,在while循环中,
fetchrow\u array()
调用在@row数组中不返回任何数据

如何最好地检索标识值以在后续SQL语句中使用

my $term_sql = "INSERT INTO reminder_term(site, name, description, localization) OUTPUT \@\@IDENTITY VALUES(?,?,?,?)";
my $t_stmt = $dbh->prepare($term_sql);
...
$t_stmt->execute($site, $name, $description, $localizer);
 
while (@row = $t_stmt->fetchrow_array()) {
    $referential_key = $row[0];
}

避免使用@标识值,因为它在存在触发器时不可靠

给定示例表模式

create table[dbo]。[提醒\u术语](
[id]int非空标识(1,1),
[现场]nvarchar(10),
[姓名]nvarchar(10),
[说明]nvarchar(10),
[本地化]nvarchar(10)
);
您可以稍微修改输出子句,您可以通过特殊的
插入的
行源代码捕获新的
id

插入提醒_术语(站点、名称、描述、本地化)
插入的输出.id
值(?,,?,?)

避免使用@标识值,因为它在存在触发器时不可靠

给定示例表模式

create table[dbo]。[提醒\u术语](
[id]int非空标识(1,1),
[现场]nvarchar(10),
[姓名]nvarchar(10),
[说明]nvarchar(10),
[本地化]nvarchar(10)
);
您可以稍微修改输出子句,您可以通过特殊的
插入的
行源代码捕获新的
id

插入提醒_术语(站点、名称、描述、本地化)
插入的输出.id
值(?,,?,?)
如果字符串中没有变量(或“\t”或“\n”等序列),则可以使用单引号。那么你就不需要逃离“@”了<代码>我的$term_sql='插入提醒_term(站点、名称、描述、本地化)输出@标识值(?,?,?)'如果字符串中没有变量(或“\t”或“\n”等序列),则可以使用单引号。那么你就不需要逃离“@”了<代码>我的$term_sql='插入提醒_term(站点、名称、描述、本地化)输出@标识值(?,?,?)'