sql >> データベース >  >> RDS >> Mysql

mysqlでテキストタイプのデフォルト値を設定する方法

    aboutusフィールドのnotnullをnullに変更しました

    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;
    

    これがトリガーです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
    ;
    

    Aboutusなしで挿入

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

    Aboutusで挿入

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

    null Aboutusを渡して挿入します

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

    デモ

    編集 @garethD 更新シナリオのケースを指摘しました。BEFORE UPDATEで別のトリガーも必要です したがって、更新にnullが表示される場合は、aboutusを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;
    

    デモ2



    1. PHPでの半正矢関数のSQL呼び出しの最適化

    2. MySQLの自動インクリメント主キーが10増加します

    3. PHPはテーブル行からデータを取得し、変数に格納します

    4. 数値テーブルを作成してデータを入力するための最良の方法は何ですか?