MySQL İşlem içinde Autoincrement kimliğini korumak

1 Cevap php

Ben eshop siparişler için veri tutmak içindir iki MySQL veritabanı tabloları var. Bunlar (aşırı basitleştirilmiş versiyonu) olarak inşa ediyoruz:

CREATE TABLE `orders` (
`id` int(11) NOT NULL auto_increment
PRIMARY KEY  (`id`)
);

CREATE TABLE `order_items` (
  `id` int(11) NOT NULL auto_increment,
  `orderID` int(11) NOT NULL,
  PRIMARY KEY  (`id`)
)

Bu ikisi arasındaki ilişki orders.id order_items.orderID karşılık olmasıdır.

Ancak yukarıda ilişkiyi koruyarak bir sorununuz varsa, yeni bir sipariş için işlem kullanıyorum. Yeni sipariş kimliği almak için. Ben, emir INSERT sorgusu taahhüt autoincremented kimliği almak ve daha sonra sipariş kalemleri için başka bir işlem başlatmak zorunda. Hangi hemen hemen işlemleri kullanarak noktası yendi.

Ben emir tabloda yeni bir düzen yerleştirin ve sonra gibi bir şey deneyebilirsiniz

INSERT INTO order_items(orderID) VALUES(LAST_INSERT_ID())

Ben çalışmak istiyorum varsayıyorum. Birinci dereceden madde eklenir Ancak sonra LAST_INSERT_ID() sipariş kimliği dönen durdurmak ve bunun yerine başka bir düzen imkansız öğe eklemek için bu sorguyu kullanmak için yapım sipariş öğe id dönecekti.

Tek bir işlem içinde bütün bu şey işi yapmak için ya da ben vazgeçmek ve bunun yerine bir prosedür kullanmanız gereken bir yolu var mı?

1 Cevap

Olur bu iş?:

INSER QUERY;
SET @insertid = LAST_INSERT_ID();
INSERT INTO `order_items` SET `OrderID` = @insertid;

Bir açıklamada tüm. Sen sözdizimi kontrol çift var olacak