Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

MySQL - Tetapkan nilai default untuk bidang sebagai fungsi rangkaian string

MySQL tidak mendukung kolom atau ekspresi yang dihitung dalam DEFAULT pilihan definisi kolom.

Anda dapat melakukan ini di pemicu (diperlukan MySQL 5.0 atau lebih tinggi):

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

Anda mungkin juga ingin membuat pemicu serupa BEFORE UPDATE .

Hati-hati dengan NULL dalam nama depan dan nama belakang, karena gabungan dari NULL dengan string lain menghasilkan NULL . Gunakan COALESCE() pada setiap kolom atau pada string gabungan yang sesuai.

edit: Contoh berikut menetapkan stage_name hanya jika NULL . Jika tidak, Anda dapat menentukan stage_name di INSERT . Anda pernyataan, dan itu akan dipertahankan.

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. Bagaimana stempel waktu unix disimpan dalam kolom int?

  2. ADDTIME() mengembalikan waktu 24 jam

  3. cara menggabungkan tabel dengan hubungan 1 ke banyak menjadi 1 baris record

  4. Mengatur kolom sebagai stempel waktu di meja kerja MySql?

  5. Bagaimana cara menggunakan kembali nilai auto_increment?