У меня есть таблица, которая соответствует заказам клиентов. Я использую AUTO_INCREMENT
для определения идентификатора заказа. У меня есть этот SQL-код в orders
таблицы:Как я могу получить добавочное значение auto
CREATE TABLE IF NOT EXISTS `orders` (
`order_id` int(11) NOT NULL AUTO_INCREMENT,
`customer_id` int(11) NOT NULL,
`customer_name` varchar(500) NOT NULL,
`order_total_price` decimal(20, 2) NOT NULL,
`order_date` varchar(100) NOT NULL,
PRIMARY KEY (`order_id`)
) ENGINE=InnoDB
Что мне нужно, чтобы вставить каждый из продуктов этого порядка в другой таблице с ключом иностранными order_id
указать, какой порядок, что продукция принадлежит. SQL код purchased_products
таблицы:
CREATE TABLE IF NOT EXISTS `purchased_products` (
`order_id` int (11) NOT NULL,
FOREIGN KEY (`order_id`) REFERENCES orders(`order_id`),
`product_name` varchar(500) NOT NULL,
`product_price` decimal(20, 2) NOT NULL,
`product_quantity` int(11) NOT NULL,
PRIMARY KEY (`order_id`)
)
Когда пользователь что-то купить, я использую для вставки данных в orders
таблице:
INSERT INTO orders (customer_id, customer_name, order_total_price, order_date)
VALUES ('{$customer_id}', '{$customer['customer_name']}', '{$order_total_price}', '{$order_date}')";
А вот моя проблема. Мне нужно вставить в purchased_products
таблицу продуктов с Order ID генерируемой:
INSERT INTO purchased_products (order_id, product_name, product_price, product_quantity)
VALUES ('*/The ID of the order need to goes here*/', '{$product['product_name']}', '{$product['product_price']}', '{$product['quantity']}')";
Это дает мне головную боль. Я не знаю, как это сделать. Это должно быть сделано по-другому? Как связать идентификатор заказа с принадлежащими ему продуктами?
Есть способы определить «только что назначенные» автоиды, но в значительной степени каждая СУРБД имеет свои собственные методы. Таким образом, стандартный вопрос: какие СУБД вы используете? –
Просто предложение .. используйте 'MAX()' метод ..Это будет выяснить последний вставленный 'id'. Но обратите внимание, что это поможет только в том случае, если в таблице заказов не было сделано никакой другой' insert'. Это всего лишь способ –
RDBMS знает, что было последним вставленным автоматическим приращением id в конкретную таблицу. Ты можешь его достать. Насколько я помню, в mysql он называется LAST_INSERT_ID. Однако, как сказал @Philip Kelley, это зависит от используемой СУБД. – SayusiAndo