Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

como definir o valor padrão para o tipo de texto no mysql


Eu mudei not null para null para o campo sobre nós
CREATE TABLE IF NOT EXISTS `te` (
  `id` int(30) NOT NULL,
  `name` text NOT NULL,
  `address` text NOT NULL,
  `Aboutus` text NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

Aqui está seu gatilho BEFORE INSERT
CREATE TRIGGER new_insert
BEFORE INSERT ON `te`
FOR EACH ROW 
SET NEW.`Aboutus` = CASE WHEN NEW.Aboutus IS NULL THEN 'Not Updated' ELSE NEW.Aboutus END
;

Inserir sem Aboutus
INSERT INTO `te` (`id`, `name`, `address`) 
VALUES (1, 'name', 'address') ;

Inserir com Aboutus
INSERT INTO `te` (`id`, `name`, `address`, `Aboutus`) 
VALUES (2, 'name', 'address', 'Aboutus') ;

Insira passando null Aboutus
INSERT INTO `te` (`id`, `name`, `address`, `Aboutus`) 
VALUES (3, 'name', 'address', null) ;

Demonstração


Editar Como @garethD apontou um caso para o cenário de atualização, você também precisa de outro gatilho em BEFORE UPDATE então, se null aparecer na atualização, aboutus deve ser atualizado como Not Updated
CREATE TRIGGER update_trigger
BEFORE UPDATE ON `te`
FOR EACH ROW 
SET NEW.`Aboutus` = CASE WHEN NEW.Aboutus IS NULL THEN 'Not Updated' ELSE NEW.Aboutus END
;

UPDATE te
SET AboutUs = NULL;

Demonstração 2