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

MySQL standardværdi som andet felts værdi

Jeg ser to mulige løsninger på dette:

1. Mulighed:

Du bruger en funktion til simpelthen at ignorere sort_num hvis den ikke er indstillet:

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

coalesce() returnerer den første ikke-nul værdi, derfor vil du indsætte værdier for sort_num hvis du virkelig har brug for at genbestille varer.

2. Mulighed:

Du skriver en trigger, som automatisk sætter værdien, hvis den ikke er sat i insert-sætningen:

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
//

(inspireret af denne kommentar )

Dette kan dog løbe ind i parallelliseringsproblemer (flere forespørgsler indsættes på samme tid)



  1. Findes der i Oracle en funktion, der beregner forskellen mellem to datoer?

  2. Sådan implementeres MariaDB Cluster 10.5 for høj tilgængelighed

  3. MySQL i 2018:Hvad er i 8.0 og andre observationer

  4. MySQL-fejl 1153 - Fik en pakke større end 'max_allowed_packet' bytes