为什么SCOPE_IDENTITY()返回空值?

时间:2015-05-30 05:49:47

标签: php sql sql-server pdo

我将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'];

有什么问题?

2 个答案:

答案 0 :(得分:0)

如果在范围内出现任何插入语句到标识列之前调用该函数,

public函数将返回null值。“

答案 1 :(得分:0)

我假设您正在通过@@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;