sql >> Base de Datos >  >> RDS >> Mysql

Valor predeterminado de MySQL como valor de otro campo

Veo dos posibles soluciones para esto:

1. Posibilidad:

Utiliza una función para simplemente ignorar sort_num si no está configurado:

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

coalesce() devuelve el primer valor no nulo, por lo tanto, insertaría valores para sort_num si realmente necesita reordenar artículos.

2. Posibilidad:

Escribe un activador, que establece automáticamente el valor si no está establecido en la declaración de inserción:

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

(inspirado en este comentario )

Sin embargo, esto podría generar problemas de paralelización (inserción de múltiples consultas al mismo tiempo)