PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pemicu sisipan Postgresql untuk menetapkan nilai

Anda benar bahwa Anda memerlukan pemicu, karena menyetel nilai default untuk kolom tidak akan berfungsi untuk Anda - nilai default hanya berfungsi untuk null nilai dan tidak membantu Anda dalam mencegah nilai kosong.

Di postgres ada beberapa langkah untuk membuat pemicu:

Langkah 1:Buat fungsi yang mengembalikan jenis trigger :

CREATE FUNCTION my_trigger_function()
RETURNS trigger AS $$
BEGIN
  IF NEW.C1 IS NULL OR NEW.C1 = '' THEN
    NEW.C1 := 'X';
  END IF;
  RETURN NEW;
END;
$$ LANGUAGE plpgsql

Langkah 2:Buat pemicu yang diaktifkan sebelum insert, yang memungkinkan Anda untuk mengubah nilai sebelum dimasukkan, yang memanggil fungsi di atas:

CREATE TRIGGER my_trigger
BEFORE INSERT ON T
FOR EACH ROW
EXECUTE PROCEDURE my_trigger_function()

Dan selesai.

Lihat kode di atas yang dieksekusi pada SQLFIddle yang menunjukkannya berfungsi dengan benar!

Anda menyebutkan dalam komentar bahwa nilai 'X' diambil dari subquery. Jika demikian, ubah baris yang relevan menjadi seperti:

NEW.C1 := (select some_column from some_table where some_condition);


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SSL untuk koneksi PostgreSQL nodejs

  2. Instruksi ilegal:4 saat menjalankan Django

  3. Ikhtisar Penawaran Amazon RDS &Aurora untuk PostgreSQL

  4. Kesalahan PostgreSQL:Fatal:nama pengguna peran tidak ada

  5. Untuk mengabaikan kunci duplikat selama 'salin dari' di postgresql