2017-09-10 1 views
0

je modèle comme ceci:Codeigniter et Oracle obtenir le last_id d'insérer la requête

function data_input($data, $file_upload) { 
    $this->db->set('ID_KEY', "LASTID_SEQ.NEXTVAL", FALSE); //false escape 
    $this->db->insert('FIRST_TABLE', $data); 
    $this->db->set('ID_KEY', "LASTID_SEQ.NEXTVAL -1", FALSE); //false escape 
    $this->db->insert('SECOND_TABLE', $file_upload); 
    return true; 
} 

Et je veux envoyer la valeur de ID_KEY au contrôleur et l'utiliser pour mettre à jour la base de données basée sur sa ID_KEY.

Mon problème est, je peux générer la valeur de ID_KEY qui est même dans FIRST_TABLE et SECOND_TABLE, mais je ne peux pas envoyer la valeur à l'automate. Ou, Puis-je utiliser une autre méthode pour obtenir la valeur de "insert_id()" de l'insertion dans l'enregistrement actif Oracle. (ou en utilisant $this->db->query?)

Répondre

0

Dans Codeigniter; L'appel de $ this-> db-> insert_id() renvoie l'identifiant de la dernière donnée insérée. Si vous envisagez de revenir dernier identifiant d'insertion des deux requêtes que je le ferais comme ceci:

function data_input($data, $file_upload) { 
$insert_id_collection = array(); 

// first table query 
$this->db->set('ID_KEY', "LASTID_SEQ.NEXTVAL", FALSE); //false escape 
$this->db->insert('FIRST_TABLE', $data); 
$insert_id_collection['first_table_name'] = $this->db->insert_id(); 

// second table query 
$this->db->set('ID_KEY', "LASTID_SEQ.NEXTVAL -1", FALSE); //false escape 
$this->db->insert('SECOND_TABLE', $file_upload); 
$insert_id_collection['second_table_name'] = $this->db->insert_id(); 

// this will contain to last insert ID; 
return $insert_id_collection; 

}

La raison pour laquelle je mets et index du tableau au nom de la table pour vous d'identifier le dernier insert ID est cela;

Espère que cela vous aide; Bonne codification