2017-01-03 4 views
0

Mein Endziel ist, eine vorhandene Spalte (Promo_ids) in der Tabelle Händler mit der neuen PK-ID UPDATE erstellt, sobald eine neue Promotion eingefügt wird. Ich möchte die vorhandenen IDs beibehalten, die bereits festgelegt wurden. Ist das möglich? Wenn ja, wäre jeder Punkt in die richtige Richtung groß. Ich bin immer noch ziemlich neu in SQL-Anweisungen. Hier ist der Code, dem ich momentan eine neue Promotion hinzufügen muss.Update nach dem Einfügen SQL

public function add_new_promo() { 
     global $wpdb; 

     $result = $wpdb->query(
        $wpdb->prepare(
        " 
        INSERT INTO $wpdb->gdp_promos 
        (promo, short_desc, long_desc, rebate_url, legal_copy, image_id, promo_headline, promo_line1, promo_desc, linkback_url, share_image_id, dealer_ids) 
        VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s) 
        ", 
        $this->promo_data['promo'], 
        $this->promo_data['short_desc'], 
        $this->promo_data['long_desc'], 
        $this->promo_data['rebate_url'], 
        $this->promo_data['legal_copy'], 
        $this->promo_data['image_id'], 
        $this->promo_data['promo_line1'], 
        $this->promo_data['promo_headline'], 
        $this->promo_data['promo_desc'], 
        $this->promo_data['linkback_url'], 
        $this->promo_data['share_image_id'], 
        $this->promo_data['dealer_ids'] 
       ) 
       ); 
     if ($result === false) { 
      $state = 'error'; 
      $msg = __('There was a problem saving the new promo details, please try again.', 'gdp'); 
     } else { 
      $_POST = array(); 
      $state = 'updated'; 
      $msg = __("promo {$this->promo_data['promo']} successfully added.", 'gdp'); 
     } 
     add_settings_error ('add-promo', esc_attr('add-promo'), $msg, $state); 
    } 

Antwort

0

Ja, es ist entweder durch eine AFTER INSERT TRIGGER auf Promotion Tabelle (OR) durch sowohl die insert und update Anweisung in einem Transaktionsblock innerhalb einer gespeicherten Prozedur gewickelt wird. Sie können LAST_INSERT_ID() verwenden, um den neu eingefügten PK-ID-Spaltenwert abzurufen, wenn die ID-Spalte eine AUTO_INCREMENT-Spalte ist.

Weitere Informationen hierzu finden Sie in der Dokumentation MySQL.

0

In Ihrem anderen Block hinzu:

$new_pk_id = $wpdb->insert_id; 
$update_stmt = "UPDATE Dealers SET promos_id = %d WHERE dealer_id = %d"; 
$wpdb->query($wpdb->prepare($update_stmt, array($new_pk_id, $specific_dealer_id)); 
+0

Das sieht aus wie es jeden Händler im Händler Tabelle mit der neuen Promo-ID aktualisiert wird, während alle vorhandenen Promo-IDs zu löschen. –

+0

Sie haben Recht. Es tut uns leid. Ich habe es bearbeitet. –

Verwandte Themen