SQL - INSERT ve id otomatik artış değerini yakalamak

7 Cevap php

SELECT ile aynı SQL otomatik id değerini almak için en iyi yolu nedir?

A forum said adding this "; has Return Scope_Identity()"
in the end of the SQL works in ASP.

PHP karşılık gelen bir yolu var mı?

7 Cevap

Postgres iyi yolu gibi bir şey yapmak için:

insert into foos(name) values ('my_foo') returning id;

Bu kullandığınız veritabanı motoruna bağlıdır. Firebird, örneğin, sizin sorguya ekleyebilirsiniz fıkra İADE gelmiş gibi bazı DBMS. Eğer ID adında değiştirmemesi sütun ile TABLE1 adında bir tablo varsa Örneğin, bu kullanabilirsiniz:

insert into TABLE1(columns...) values (values...) returning ID;

Ve bu sadece normal bir select deyimi gibi sokulan kimliği dönecekti.

Microsoft Transact SQL kimlik @ @ kullanabilirsiniz.

örneğin

DECLARE @Table TABLE ( col0 INT IDENTITY, col1 VARCHAR(255), col2 VARCHAR(255))

INSERT INTO @Table (col1, col2) VALUES ('Hello','World!')

SELECT @@Identity

SELECT * FROM @Table

In php: mysql_insert_id() http://us3.php.net/mysql_insert_id

veya

If you wanted to genterate the number from your mySql select query, you could use this EDIT:

SELECT LAST_INSERT_ID(`1`) + 1 FROM table

Çok dikkatli olun: Görünüşe göre yüksek eşzamanlılık çalışmaz nextval (sira) seçin - Eğer seçme nextval (sira) denilen kez eklenir ve bazı diğer bağlantı zaman arasında ekleyebilirsiniz. Her zaman yüksek eşzamanlılık testi koşum böyle kod test edin.

SQL Server select deyimi kullanarak bir uç kimlik değerini ve ne olursa olsun diğer sütunları kimlik hangi kayıt gider hangi belirlemek gerekebilir dönecektir bir çıkış madde olabilir. Eğer bir değerler madde kullanıyorsanız, o zaman hemen sonra ekleme seçeneğini SCOPE_IDENTITY () kullanın.