Mysql
 sql >> Baza danych >  >> RDS >> Mysql

MySQL - Ustaw domyślną wartość pola jako funkcję konkatenacji ciągów

MySQL nie obsługuje kolumn obliczanych ani wyrażeń w DEFAULT opcja definicji kolumny.

Możesz to zrobić w wyzwalaczu (wymagany MySQL 5.0 lub nowszy):

CREATE TRIGGER format_stage_name 
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
  SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
END

Możesz również utworzyć podobny wyzwalacz BEFORE UPDATE .

Uważaj na NULL w imieniu i nazwisku, ponieważ konkat NULL z dowolnym innym ciągiem tworzy NULL . Użyj COALESCE() odpowiednio w każdej kolumnie lub w połączonym łańcuchu.

edytuj: Poniższy przykład ustawia stage_name tylko jeśli jest NULL . W przeciwnym razie możesz określić stage_name w swoim INSERT oświadczenie i zostanie zachowane.

CREATE TRIGGER format_stage_name 
BEFORE INSERT ON actors
FOR EACH ROW
BEGIN
  IF (NEW.stage_name IS NULL) THEN
    SET NEW.stage_name = CONCAT(NEW.forename, ' ', NEW.surname);
  END IF;
END


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak ustawić sql_mode w my.cnf w MySQL 8?

  2. Najlepsze praktyki tworzenia kopii zapasowych dla MySQL, MariaDB i Galera Cluster

  3. Wybór aktywnego rekordu Codeigniter, lewe dołączenie, liczenie

  4. Metoda Illuminate\Support\Collection::save nie istnieje w Laravel

  5. Wstawianie zmiennej do zapytania SQL z Javy