Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Zend Db/Mysql - Inserir com Select


Minha solução (usando Zend) foi BLOQUEAR a tabela, depois consultar o item_number, anexar o resultado à consulta de inserção, inserir e DESBLOQUEAR a tabela. Veja como BLOQUEAR e DESBLOQUEAR:
$sql = "LOCK TABLE items WRITE";
$this->getAdapter()->query($sql);

//run select to get last item_number
//append result to insert array
//insert

$sql = "UNLOCK TABLES";
$this->getAdapter()->query($sql);

Outra maneira é escrever a consulta para que o valor seja selecionado durante a inserção. Aqui está um exemplo:
$sql = INSERT INTO items (item_id, item_family, item_name, item_number) 
              VALUES (item_id, item_family, item_name, (SELECT item_number FROM... )+1);
$this->getAdapter()->query($sql);

Mais informações sobre esse tipo de consulta em MySQL Web