Come utilizzare l'istruzione MySQL "TRUNCATE TABLE"?

26 apr 2012, 11:18:20
Visualizzazioni: 20.6K
Voti: 5

Ho provato sia dbDelta che $wpdb->query, ma non funzionano. Qualcuno ha qualche suggerimento?

1
Commenti

Qual è l'errore? Puoi visualizzarlo con la seguente chiamata subito dopo aver eseguito l'istruzione: $e = $wpdb->query($sql); die(var_dump($e));

Thomas Thomas
26 apr 2012 11:47:24
Tutte le risposte alla domanda 3
0
12

Come provato oggi, il TRUNCATE è MOLTO MEGLIO del DELETE, perché DELETE rompe il sito, mentre truncate semplicemente svuota la tabella, ecco il codice funzionante:

global $wpdb;

$wpdb->query('TRUNCATE TABLE wp_posts');
20 dic 2013 23:23:52
5

Secondo questo post sul forum, la funzione truncate non funziona. Immagino che, trattandosi di una query così distruttiva, venga filtrata dalla classe. C'è anche questo post su Trac che, se ho capito bene, vieta le istruzioni DDL.

26 apr 2012 16:33:01
Commenti

Beh, forse uso DELETE invece di truncate.

goodseller goodseller
26 apr 2012 17:51:54

@goodseller Non sono sicuro di cosa stai cercando di fare, quindi potrebbe non essere importante per te--ma nota che DELETE non resetta le colonne auto-incrementanti. Quindi anche se la tua tabella sarà vuota, il prossimo ID dell'elemento riprenderà da dove l'ultimo valore auto-incrementato si è fermato.

MathSmath MathSmath
26 apr 2012 22:53:18

@MathSmath Sì~ È vero, verissimo. Tuttavia c'è qualche modo per farlo?

goodseller goodseller
27 apr 2012 07:02:01

L'ho trovato: $wpdb->query("ALTER TABLE tableName AUTO_INCREMENT=0") Grazie @MathSmath :)

goodseller goodseller
27 apr 2012 08:37:57
  1. il codice del forum linkato non funzionava a causa di un errore di battitura. 2. il ticket trac parla solo dei valori di ritorno dalle istruzioni ddl.
skndstry skndstry
13 set 2016 12:03:29
0

So che ci sono risposte simili sopra, ma nelle risposte sopra, la tabella wp_post viene utilizzata e se per errore qualcuno usa quel codice perderà tutti i suoi articoli.

Quindi condivido un modo corretto per troncare.

   global $wpdb;
   $table_name = $wpdb->base_prefix.'name_of_table_without_prefix';
   $wpdb->query("TRUNCATE TABLE $table_name");
19 ott 2021 15:47:20