为什么SCOPE_IDENTITY()返回一个空值?


Why does SCOPE_IDENTITY() return a null value?

我将id设置为标识主键,但此代码返回null,我不想使用@@IDENTITY

$stmt = $db->prepare("INSERT INTO `question_field`(`q_field_id`, `q_field`)  VALUES ('','software');SELECT SCOPE_IDENTITY() as last_id");
$stmt->execute();
$row=$stmt->fetch();
echo $row['last_id'];

有什么问题吗?

我假设通过@@IDENTITYSCOPE_IDENTITY()您正在访问Sql Server数据库。

在这种情况下,注意:

  • Sql Server的转义是通过[symbol]完成的,而不是MySql的反引号。
  • 当插入到一个IDENTITY列的表时,不要为标识列
  • 指定任何值

。如果IDENTITY列是q_field_id,那么需要做的就是:

INSERT INTO [question_field]([q_field])
VALUES ('software');
SELECT SCOPE_IDENTITY() as last_id;

SCOPE_IDENTITY()函数如果在insert语句进入标识列之前调用该函数将返回空值。"