2015-08-10 2 views
1

Как вставить один и тот же идентификатор в разные таблицы за раз в одной таблице. это первичный ключ и автоинкремент и в другой таблице. Это внешний ключ одновременно. Мне нужно вставлять обе таблицы с помощью OpenCrat.Может ли кто-нибудь помочь мне вставить один и тот же идентификатор в разные таблицы

$this->db->query("INSERT INTO " 
. DB_PREFIX . "xyz 
SET 
    boutiques_id = '" . (int)$this->customer->getId() . "', 
    boutique_customer_id = '" . $this->db->escape($data['boutique_customer_id']) . "', 
    ordered_date = '" . $this->db->escape($data['ordered_date']) . "', 
    '"); 

$this->db->query("INSERT INTO " 
. DB_PREFIX . "abc 
SET 
    boutiques_id = '" . (int)$this->customer->getId() . "', 
    firstname = '" . $this->db->escape($data['firstname']) . "', 
    lastname  = '" .$this->db->escape($data['lastname']). "', 

    } 

В таблице abc это первичный ключ и автоинкремент, тогда как во второй таблице это внешний ключ.

+0

Используйте транзакцию. – Daan

+0

Я не получил, вы можете показать код один раз. – user2630366

ответ

0

Гетто путь предполагая, что это уникальное ограничение на boutique_customer_id и ordered_date будет:

INSERT INTO abc (boutiques_id, firstname, lastname) 
SELECT boutiques_id, 'John', 'Smith' 
FROM xyz 
WHERE boutique_customer_id = 123 
AND ordered_date = 2015-05-01 

Или вам нужно будет использовать транзакции/программно получить и установить, что значение внешнего ключа. В любом случае я бы не попытался установить первичный ключ при первоначальной вставке. Наконец, не связанный с вашим вопросом, попробуйте использовать ORM.

+0

В одной функции мы вставляем обе таблицы – user2630366

2

После запроса вставки используйте этот $this->db->getLastId();, чтобы получить последний вставленный идентификатор этой таблицы, и вы можете добавить это в другую таблицу.

+1

Спасибо, что так решила проблема – user2630366

Смежные вопросы