SQL - إدراج وقبض على الهوية السيارات-قيمة الزيادة

StackOverflow https://stackoverflow.com/questions/621369

  •  05-07-2019
  •  | 
  •  

سؤال

ما هي أفضل طريقة للحصول على السيارات قيمة معرف في نفس SQL مع اختيار ؟

منتدى مضيفا أن هذا "; has Return Scope_Identity()"
في نهاية SQL يعمل في ASP.

هل هناك طريقة المقابلة في PHP?

هل كانت مفيدة؟

المحلول

وهذا يعتمد على خادم قاعدة البيانات الخاصة بك. باستخدام الخلية، والدعوة mysql_insert_id() مباشرة بعد الاستعلام إدراج الخاص بك. عن طريق الإنترنت، الاستعلام الأول " select nextval(seq) " على تسلسل وتشمل المفتاح في الاستعلام إدراج الخاص بك.

والاستعلام عن "select max(id) + 1 from tbl" قد تفشل إذا طلب آخر إدراج سجل في وقت واحد.

نصائح أخرى

في بوستجرس فإن أفضل طريقة هي أن تفعل شيئا مثل:

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

وهذا يعتمد على محرك قاعدة البيانات الذي تستخدمه. بعض نظم إدارة قواعد البيانات، مثل فايربيرد للحصول على سبيل المثال، قد العودة البند يمكنك إضافتها إلى الاستعلام الخاص بك. على سبيل المثال، إذا كان لديك جدول يسمى TABLE1 مع عمود autoincrement اسمه ID، يمكنك استخدام هذا:

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

وانها ستعود معرف إدراج تماما مثل العبارة حدد منتظم.

في مايكروسوفت SQL للعمليات يمكنك استخدامIDENTITY.

ومنها مثلا.

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

في php:mysql_insert_id() http://us3.php.net/mysql_insert_id

أو

إذا أردت أن genterate عدد من الخلية حدد الاستعلام, هل يمكن استخدام هذا تحرير:

SELECT LAST_INSERT_ID(`1`) + 1 FROM table 

كن حذرا جدا: يبدو اختيار nextval (بعدها) لا يعمل في التزامن عالية - بعض اتصال أخرى يمكن إدراج بين الوقت عند إدراج والوقت عند يسمى حدد nextval (يليها). دائما اختبار هذه التعليمات البرمجية في يسخر اختبار عالية التزامن.

في SQL خادم ادخال باستخدام حدد البيان يمكن أن يكون شرط الانتاج الذي سيعود قيمة الهوية ومهما الأعمدة الأخرى التي قد تحتاج إلى تحديد أي هوية يذهب إلى أي سجل. إذا كنت تستخدم بندا القيم، ثم استخدم حدد SCOPE_IDENTITY () مباشرة بعد إدراج.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top