Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL - Legen Sie den Standardwert für das Feld als Zeichenfolgenverkettungsfunktion fest

MySQL unterstützt keine berechneten Spalten oder Ausdrücke in DEFAULT Option einer Spaltendefinition.

Sie können dies in einem Trigger tun (MySQL 5.0 oder höher erforderlich):

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

Sie können auch einen ähnlichen Trigger BEFORE UPDATE erstellen .

Achten Sie auf NULL in Vor- und Nachnamen, weil Konkat von NULL mit jeder anderen Zeichenfolge ergibt ein NULL . Verwenden Sie COALESCE() auf jeder Spalte oder auf der verketteten Zeichenfolge, wie angemessen.

Bearbeiten: Das folgende Beispiel legt stage_name fest nur wenn es NULL ist . Andernfalls können Sie den stage_name angeben in Ihrem INSERT -Anweisung, und sie wird beibehalten.

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