Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL стойност по подразбиране като стойност на друго поле

Виждам две възможни решения за това:

1. Възможност:

Използвате функция, за да игнорирате просто sort_num ако не е зададено:

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

coalesce() връща първата стойност, различна от нула, следователно бихте вмъкнали стойности за sort_num ако наистина трябва да пренаредите артикули.

2. Възможност:

Пишете тригер, който автоматично задава стойността, ако не е зададена в оператора за вмъкване:

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

(вдъхновено от this comment a> )

Това обаче може да срещне проблеми с паралелизиране (вмъкване на няколко заявки едновременно)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Преобразувайте датата във формат MM/DD/YYYY в MySQL дата

  2. mysql:Не можем ли да създадем тригери на системни таблици?

  3. MySQL 8.0 - Клиентът не поддържа протокол за удостоверяване, поискан от сървъра; помислете за надграждане на MySQL клиента

  4. Използване на OpenVPN за защитен достъп до вашия клъстер от база данни в облака

  5. Използване на PHP SESSION променливи за съхраняване на резултатите от MySQL заявки