Mysql
 sql >> Database >  >> RDS >> Mysql

Colonna calcolata da un'altra colonna?

Generated Column è uno dei buoni approcci per la versione MySql che è 5.7.6 e successive.

Esistono due tipi di colonne generate:

  • Virtuale (predefinito):la colonna verrà calcolata al volo quando arecord viene letto da una tabella
  • Memorizzata:la colonna verrà calcolata quando viene scritto/aggiornato un nuovo record nella tabella

Entrambi i tipi possono avere restrizioni NOT NULL, ma solo una colonna generata archiviata può far parte di un indice.

Per il caso attuale, utilizzeremo la colonna generata memorizzata. Per implementare ho considerato che entrambi i valori richiesti per il calcolo sono presenti in tabella

CREATE TABLE order_details (price DOUBLE, quantity INT, amount DOUBLE AS (price * quantity));

INSERT INTO order_details (price, quantity) VALUES(100,1),(300,4),(60,8);

l'importo apparirà automaticamente nella tabella e potrai accedervi direttamente, inoltre tieni presente che ogni volta che aggiornerai una qualsiasi delle colonne, anche l'importo verrà aggiornato.