sql >> Databasteknik >  >> RDS >> Mysql

hur man ställer in standardvärde för texttyp i mysql

Jag har ändrat inte null till null för om oss-fältet

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;

Här är din utlösare 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
;

Infoga utan Aboutus

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

Infoga med Aboutus

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

Infoga genom att skicka null Aboutus

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

Demo

Redigera Som @garethD pekade på ett fall för uppdateringsscenario, du behöver också en annan trigger på BEFORE UPDATE så om null visas i uppdateringen bör aboutus uppdateras som 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;

Demo 2



  1. Microsoft T-SQL till Oracle SQL översättning

  2. Få BLOB från BFILE-kolumnen i Oracle

  3. Hur man skapar en tabell endast om den inte finns i PostgreSQL

  4. Välja icke-existerande data med MySQL