2015-05-30 175 views
0

我将id设置为标识主键,但此代码返回null,我不想使用@@IDENTITY为什么SCOPE_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']; 

什么问题?如果该功能是任何插入语句插入标识列发生的范围援引

回答

0

我假设由@@IDENTITYSCOPE_IDENTITY()你正在访问一个SQL 。Server数据库

在这种情况下,需要注意:

  • 转义SQL Server中通过[symbol],不能做机智h MySql的反引号。
  • 当插入到表中与IDENTITY柱,不指定任何值在所有的标识列

即,如果IDENTITY列是q_field_id,则所有所需要的是:

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

即原始查询将返回一个错误,因为您正试图将''插入到'身份'列中。 – StuartLC

0

SCOPE_IDENTITY()函数将返回空值。”

相关问题