2015-05-30 12 views
0

Я установил идентификатор как первичный ключ, но этот код возвращает 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

Я предполагаю, что @@IDENTITY и SCOPE_IDENTITY() вы обращаетесь к Sql

в этом случае, обратите внимание, что база данных сервера:.

  • Выбираясь в Sql Server осуществляется через [symbol], а не остроумие h backticks MySql.
  • При вставке в таблицу с IDENTITY колонке, не указать любое значение вообще для столбца идентификации

т.е. если IDENTITY столбец q_field_id, то все, что требуется, это:

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

т.е. исходный запрос вернет ошибку, потому что вы пытаетесь вставить '' в столбец 'identity'. – StuartLC

0

SCOPE_IDENTITY() функция возвращает нулевое значение, если функция вызывается до любого вставки заявления в столбец идентификации происходят в области.»

Смежные вопросы