sql >> Databáze >  >> RDS >> Mysql

Výchozí hodnota MySQL jako hodnota jiného pole

Vidím pro to dvě možná řešení:

1. Možnost:

Pomocí funkce jednoduše ignorujete sort_num pokud není nastaveno:

`SELECT * FROM mytable ORDER BY coalesce(sort_num, id)`

coalesce() vrátí první nenulovou hodnotu, proto byste vložili hodnoty pro sort_num pokud opravdu potřebujete zboží znovu objednat.

2. Možnost:

Napíšete spouštěč, který automaticky nastaví hodnotu, pokud není nastavena v příkazu insert:

DELIMITER //

CREATE TRIGGER sort_num_trigger
BEFORE INSERT ON mytable
FOR EACH ROW BEGIN
    DECLARE auto_inc INT;
    IF (NEW.sort_num  is null) THEN
         -- determine next auto_increment value
        SELECT AUTO_INCREMENT INTO auto_inc FROM information_schema.TABLES
        WHERE TABLE_SCHEMA=DATABASE() AND TABLE_NAME = 'mytable';
        -- and set the sort value to the same as the PK
        SET NEW.sort_num = auto_inc;
    END IF;
END
//

(inspirováno tímto komentářem )

To však může narazit na problémy s paralelizací (vkládání více dotazů současně)



  1. Oracle Rows to Column Transformation

  2. Převod DateTime do formátu YYYY-MM-DD na SQL Server

  3. Použití výrazů k filtrování dat databáze

  4. Standardy / konvence pro názvy sloupců MySQL