Jumat, 29 Maret 2013

fungsi menarik (SELECT SCOPE_IDENTITY(), SELECT LAST_INSERT_ID() dan RETURNING PK)



Yuph kali ini kita akan membahas fungsi menarik (SELECT SCOPE_IDENTITY(), SELECT LAST_INSERT_ID() dan RETURNING PK) yang dimiliki oleh database2x terkenal seperti SQL Server, MySQL dan Firebird.
Dari nama fungsinya kita bisa menebak kegunaan dari fungsi diatas yaitu untuk mendapatkan nilai ID terakhir (biasanya bertipe angka) yang diinputkan.
Saya dan mungkin Anda biasanya dalam merancang tabel untuk selalu menambahkan field ID dengan attribut IDENTITY/AUTONUMBER dan sekaligus dijadikan sebagai PRIMARY KEY.
Tentunya hal ini kita lakukan untuk mempermudah dalam proses manipulasi data (edit dan delete).
Contoh beberapa tabel yang biasanya menggunakan field ID untuk PRIMARY KEY dan sekaligus diset dengan attribut IDENTITY/AUTONUMBER

Bagi yang males membaca referensi (termasuk sy :D) biasa menuliskan kode berikut untuk mengINSERTkan dan mendapatkan nilai ID yang terakhir, kita ambil contoh tabel provinsi.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub btnInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsert.Click
    Dim lastID As Long = 0

    ' langkah 1 - menambahkan data
    strSql = "INSERT INTO provinsi (keterangan) VALUES (@1)"
    Using cmd As New SqlClient.SqlCommand(strSql, conn)
        With cmd
            .Parameters.Clear()
            .Parameters.AddWithValue("@1", "Riau")

            .ExecuteNonQuery()
        End With
    End Using

    ' langkah 2 - mengambil id terakhir dg memanfaatkan fungsi MAX
    strSql = "SELECT MAX(id) FROM provinsi"
    Using cmd As New SqlClient.SqlCommand(strSql, conn)
        lastID = Convert.ToInt32(cmd.ExecuteScalar())
    End Using

    ' tampilkan ID terakhir
    MessageBox.Show("Last ID : " & lastID.ToString())
End Sub
Sekarang kita lihat bedanya jika memanfaatkan fungsi SELECT SCOPE_IDENTITY().
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
Private Sub btnInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsert.Click
    Dim lastID As Long = 0

    strSql = "INSERT INTO provinsi (keterangan) VALUES (@1) SELECT SCOPE_IDENTITY()" ' ada tambahan SELECT SCOPE_IDENTITY()
    Using cmd As New SqlClient.SqlCommand(strSql, conn)
        With cmd
            .Parameters.Clear()
            .Parameters.AddWithValue("@1", "Riau")

            lastID = Convert.ToInt32(.ExecuteScalar())
        End With
    End Using

    MessageBox.Show ("Last ID : " & lastID.ToString())
End Sub
Gimana lebih simple kan ? :)
Oke sekarang kita lihat kode untuk MySQL(SELECT LAST_INSERT_ID) dan Firebird (RETURN KOLOM_PK).
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
' MySQL
Private Sub btnInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsert.Click
    Dim lastID As Long = 0

    strSql = "INSERT INTO provinsi (keterangan) VALUES (@1); SELECT LAST_INSERT_ID()"
    Using cmd As New MySqlClient.MySqlCommand(strSql, conn)
        With cmd
            .Parameters.Clear()
            .Parameters.AddWithValue("@1", "Riau")

            lastID = Convert.ToInt32(.ExecuteScalar())
        End With
    End Using

    MessageBox.Show ("Last ID : " & lastID.ToString())
End Sub

' Firebird
Private Sub btnInsert_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnInsert.Click
    Dim lastID As Long = 0

    strSql = "INSERT INTO provinsi (keterangan) VALUES (@1) RETURNING ID" ' ID -> kolom primary key
    Using cmd As New FirebirdClient.FbCommand(strSql, conn)
        With cmd
            .Parameters.Clear()
            .Parameters.AddWithValue("@1", "Riau")

            lastID = Convert.ToInt32(.ExecuteScalar())
        End With
    End Using

    MessageBox.Show ("Last ID : " & lastID.ToString())
End Sub

Related Posts:

  • 15 CARA MEMBOBOL SITUS WEB Pemblokiran pada umumnya bertujuan baik, agar pengakses konten yang tidak baik bisa diminimalis. Akan tetapi bagi pengguna yang memerlukan akses untuk tujuan belajar, penelitian, dan tujuan positif lainya tentunya ingin … Read More
  • CARA MELIHAT SPESIPIKASILAPTOP&KOMPUTER SECARA AKURAT Langsung aja ya, lagi males basa-basi, mau berangkat kuliah kok mendung, jadi rada nggak mood, hehe. Cukup deh curhatnya, postingan kali ini tentang tutorial Cara Melihat Spesifikasi Laptop Paling Akurat. Mari ke TKP sob,… Read More
  • judul skripsi 1. Aplikasi Pemesanan Rental Mobil Hafa Yogyakarta Dengan Layanan Web dan WAP 2. Analisis dan Perancangan Sistem Informasi Pemasaran dan Persediaan Barang PT. Nycomed Amersham 3. Perancangan Perangkat Lunak Tender untuk Jasa… Read More
  • perintah comand prompt KUMPULAN KODE COMMAND PROMPT A-Z LENGKAP A Ø ADDUSERS : Tambah daftar pengguna untuk / dari file CSV Ø ARP : Address Resolution Protocol Ø Assoc : Ubah ekstensi file asosiasi Ø ASSOCIAT : Salah satu langkah asosiasi … Read More
  • Asal Usul Marga Sihombing Lumbantoruan merupakan salah satu marga dari suku Batak, diwarisi oleh semua yang bermarga Lumbantoruan, baik lelaki maupun wanita dari garis keturunan Bapak secara turun-temurun. Lumbantoruan yang pertama bergelar BORSA… Read More

0 komentar: