Cara menggunakan new keyword in mysql


As we know that in trigger definition, we can refer to columns of the row being inserted, updated or deleted. Following are the ways OLD and NEW keywords enable us to access columns −

  • We must have to prefix the column name with a qualifier of OLD to refer to a value from the original row.

  • We must have to prefix the column name with a qualifier of NEW to refer to a value in the new row.

Now, the use of OLD and NEW must be done appropriately because the triggering event

Determines which of them are allowable −

  • In an INSERT trigger, NEW.column_name indicates a column value to be inserted into a new row. Here OLD is not allowable.

  • In a DELETE trigger, OLD.column_name indicates the value of a column in a row to be deleted. Here NEW is not allowable.

  • In an UPDATE trigger, OLD.column_name and NEW.column_name refer to the value of the column in a row before and after the row is updated respectively.

In other words, we can say that OLD must be used in read-only fashion and NEW can be used to read or change column values.

Use of keyword OLD in trigger

Following the example of DELETE trigger is showing the use of OLD −

mysql> CREATE TRIGGER studentinfo_after_delete
   -> AFTER DELETE
   -> ON student_info
   -> FOR EACH ROW FOLLOWS
   -> BEGIN
   -> DECLARE vuser varchar(30);
   -> SELECT USER() into vuser;
   -> INSERT INTO student_info_deleted(id,deleted_date,deleted_by) VALUES(OLD.id,SYSDATE(),vuser);
   -> END; //
Query OK, 0 rows affected (0.25 sec)

Use of keyword NEW in trigger

Following the example of INSERT trigger is showing the use of NEW −

mysql> Create Trigger before_inser_studentage BEFORE INSERT ON
student_age FOR EACH ROW
BEGIN
IF NEW.age < 0 THEN SET NEW.age = 0;
END IF;
END //
Query OK, 0 rows affected (0.30 sec)

Cara menggunakan new keyword in mysql

Updated on 30-Jul-2019 22:30:21

  • Related Questions & Answers
  • MySQL trigger to insert row into another table?
  • How to enable row selection in a JTable with Java
  • How to convert an old data frame to new data frame in R?
  • Program to check old and new version numbering are correct or not in Python
  • How to convert a matrix to a data frame with column names and row names as new columns in R?
  • What is the difference between old style and new style classes in Python?
  • How will you create a new TRIGGER on the ORDERS DB2 table? Give the syntax of TRIGGER
  • Access last inserted row in MySQL?
  • How does ‘FOR EACH ROW’ work in the MySQL trigger?
  • Create new array without impacting values from old array in JavaScript?
  • Variables and Keywords in C
  • Add new MySQL table columns and create indexes?
  • How to remove old Docker containers?
  • How to edit old designs in Canva?
  • How to trigger event in JavaScript?

Tutorial PHP MySQL Part 20: Cara Membuat Koneksi PHP MySQL dengan PDO

16 Dec 14 | | Tutorial PHP | |

Cara menggunakan new keyword in mysql

Setelah membahas tentang pengertian PDO dan cara mengaktifkan driver PDO di dalam PHP, pada tutorial PHP MySQL kali ini kita akan membahas cara membuat koneksi PHP MySQL dengan PDO (PHP Data Object).

Dalam tutorial kali ini saya hanya fokus untuk membahas cara membuat koneksi, untuk cara menjalankan dan menampilkan data hasil query, akan kita bahas dalam tutorial selanjutnya.


Membuat koneksi PHP MySQL dengan PDO constructor

Karena PDO adalah fungsi/fitur PHP yang ditulis menggunakan objek, maka untuk membuat koneksi antara PHP dengan MySQL, kita menggunakan PDO constructor, yakni dengan membuat objek baru dari class PDO (menggunakan keyword: new).

Berikut adalah struktur dasar cara penulisan PDO constructor untuk database MySQL:

$dbh = new PDO('mysql:host=lokasi_db;dbname=nama_database', 
"nama_user", "password_user");

Variabel $dbh adalah variabel yang akan menjadi object PDO. Object ini biasa disebut sebagai “Database Handler”. Object inilah yang nantinya akan kita gunakan untuk menjalankan perintah-perintah PDO. Nama variabel boleh bebas, dan tidak harus $dbh.

Argumen dari constructor PDO terdiri dari 3 bagian, bagian pertama berisi nama database server (misalnya:mysql) kemudian diikuti dengan alamat server dan nama database, semuanya di dalam 1 string. Untuk argumen kedua diisi dengan nama user, dan argumen ketiga berisi password user.

Sebagai contoh, untuk masuk ke dalam MySQL server di komputer localhost, dengan user root, password: 12345, nama database: universitas, kode PDO yang digunakan adalah sebagai berikut:

<?php
   $dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "12345");
?>

Setelah membuat koneksi PDO, untuk menghapus koneksi kita tinggal memberikan nilai “null” kepada variabel “Database Handler” sebagai berikut:

<?php
   $dbh = null;
?>

Sama seperti mysqli, proses penutupan koneksi ini bersifat opsional, dan PHP secara otomatis akan menghapus koneksi pada saat halaman PHP selesai dijalankan.

Walaupun dalam tutorial ini kita hanya membahas MySQL, sebagai perbandingan berikut adalah cara melakukan koneksi untuk database server MS SQL, Sybase dan SQLite:

Koneksi PDO untuk MS SQL Server Database:

$dbh = new PDO("mssql:host=$host;dbname=$dbname, $user, $pass");

Koneksi PDO untuk Sybase Database:

$dbh = new PDO("sybase:host=$host;dbname=$dbname, $user, $pass");

Koneksi PDO untuk SQLite Database:

$dbh = new PDO("sqlite:my/database/path/database.db");


Cara Menampilkan Pesan Kesalahan (error) pada PDO

Karena PDO menggunakan object, penanganan kesalahan akan lebih baik jika menggunakan blok TRY…CATCH, atau dikenal dengan “exceptions”.

Untuk menampilkan pesan kesalahan dengan exceptions pada PDO, terdapat 3 pilihan metode. Ketiga metode ini menggunakan method PDO::setAttribute(PDO::ATTR_ERRMODE):

  • $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_SILENT );
  • $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_WARNING );
  • $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );

PDO::ERRMODE_SILENT adalah pilihan default. Jika kita tidak mengubah setingan error, pilihan inilah yang digunakan. Untuk mengecek error, kita bisa menggunakan method PDO::errorCode() dan PDO::errorInfo().

PDO::ERRMODE_WARNING digunakan untuk menampilkan error berupa warning PHP, kemudian PHP akan melanjutkan proses eksekusi program. Pilihan ini cocok untuk proses debugging.

PDO::ERRMODE_EXCEPTION digunakan untuk menampilkan error dengan exceptions. Pilihan inilah yang sering digunakan untuk menampilkan error dengan TRY…CATCH.

Dengan menggunakan penanganan kesalahan (exceptions), berikut adalah modifikasi kode PHP untuk koneksi PDO dengan MySQL:

<?php
try {
  // buat koneksi dengan database
  $dbh = new PDO('mysql:host=localhost;dbname=universitas', "root", "");
 
  // set error mode
  $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
 
  // hapus koneksi
  $dbh = null;
}
catch (PDOException $e) {
  // tampilkan pesan kesalahan jika koneksi gagal
  print "Koneksi atau query bermasalah: " . $e->getMessage() . "<br/>";
  die();
}
?>

Sebagai contoh, jika saya mengganti nama user menjadi “user_tetangga” yang memang tidak ada di dalam database, berikut tampilan error yang terjadi:

Koneksi atau query bermasalah: SQLSTATE[HY000] [1044] 
Access denied for user ''@'localhost' to database 'universitas'

Didalam block TRY…CATCH inilah nantinya kita akan menjalankan query-query MySQL seperti menampilkan data, maupun menginput data baru ke dalam tabel MySQL. Untuk cara menampilkan data tabel MySQL menggunakan PDO, akan kita bahas dalam tutorial berikutnya: Cara Menampilkan data MySQL menggunakan PDO (PHP Data Object).