2009-12-30 5 views
4

Я долгое время настольный компьютер C++ программист, новый для SQL. Мне нужно вставить в таблицу с полем autoincrment, и этот оператор sql вернет новое значение для поля автоинкремента.SQL INSERT INTO, возвращающее поле автоинкремента

что-то вроде:

INSERT INTO Entrys ('Name','Description') 
VALUES ('abc','xyz') 
SELECT Entrys.EntryID WHERE EntryID=[THE ONE JUST INSERTED!] 

Извините за нуб.

+2

какую базу данных вы используете? SQL Server, MySQL и т. Д.? –

ответ

3

выберите scope_identity

insert into table values ('string value');select scope_identity() 

Подробности here

+1

Это от: http://www.velocityreviews.com/forums/t303448-return-identity-after-sql-insert.html? Если это так, вы должны предоставить ссылку. –

2

Предполагая, что вы используете SQL Server, вы можете использовать scope_identity вернуть «последнее значение идентификатора вставляется в столбец идентификаторов в том же объеме. scope - это модуль: хранимая процедура, триггер, функция или пакет. Поэтому два оператора находятся в одной и той же области, если они находятся в одной и той же хранимой процедуре, функции или партии ».

INSERT INTO Entrys ('Name','Description') VALUES ('abc','xyz'); 
SELECT SCOPE_IDENTITY() 
3

В MySQL вы можете использовать LAST_INSERT_ID()

2

В SQL Server, вы можете также использовать предложение OUTPUT на вашем INSERT заявление:

INSERT INTO Entrys('Name', 'Description') 
OUTPUT Inserted.EntryID 
VALUES ('abc','xyz') 

Этот вывод будет вновь созданной стоимости IDENTITY поля.

0

Как @marc_s сказал для SQL Server, в PostgreSQL вы можете получить такое же поведение с:

INSERT INTO Entrys ('Name','Description') 
VALUES ('abc','xyz') 
RETURNING EntryID; 

ВОЗВРАЩЕНИЕ также очень полезно, когда вы вставив несколько кортежей, и вы хотите, чтобы все сгенерированные идентификаторы для каждого строк.