sql >> Databasteknik >  >> RDS >> Mysql

Kolumn beräknad från en annan kolumn?

Generated Column är en av de bra metoderna för MySql-versionen som är 5.7.6 och högre.

Det finns två typer av genererade kolumner:

  • Virtuell (standard) - kolumn beräknas i farten när arecord läses från en tabell
  • Lagrad – kolumn beräknas när en ny post skrivs/uppdateras i tabellen

Båda typerna kan ha NOT NULL-begränsningar, men bara en lagrad genererad kolumn kan vara en del av ett index.

För aktuellt fall kommer vi att använda lagrad genererad kolumn. För att implementera har jag ansett att båda värdena som krävs för beräkning finns i tabellen

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);

beloppet kommer automatiskt att dyka upp i tabellen och du kan komma åt det direkt. Observera också att när du uppdaterar någon av kolumnerna kommer beloppet också att uppdateras.



  1. Vad är skillnaden mellan RANK och DENSE_RANK i SQL?

  2. Stöder Microsoft OLE DB Provider för SQL Server TLS 1.2

  3. Förstå låsgranularitet i MySQL

  4. MySQL:Large VARCHAR vs. TEXT?