Categories: SQL Server

Inserting Data into 2 Tables with 1 Statement without Trigger

Biasanya kita menggunakan trigger untuk dapat melakukan memasukkan data ke dalam 2 tabel yang berbeda sekaligus. 1 tabel target yang akan dimasukkan data yang kemudian dibuatkan trigger yang kemudian trigger tersebut akan melakukan proses insert ke tabel ke 2.

Namun dalam perkembangannya, Insert Statement saat ini di memiliki sub-klausa OUTPUT. dengan memanfaatkan sub-klausa OUTPUT tersebut kita dapat membuat 1 buah statement insert yang dapat melakukan insert data ke 2 buah tabel sekaligus.

Mari kita coba praktekkan bersama-sama :

contoh kasusnya adalah sebagai berikut, di departemen TI memiliki policy bahwa setiap penambahan user baru pada sebuah aplikasi harus melakukan penggantian password dalam kurun waktu 7 hari. dalam 7 hari tersebut, user akan selalu diingatkan oleh sistem setiap login untuk pengganti passwordnya sampai user tersebut mengganti password.

Pertama kita akan membuat 2 buah tabel yaitu tabel DftrUser dan tabel TblPengingat

USE AdventureWorks;
GO 
CREATE SCHEMA [Pengguna] AUTHORIZATION dbo;
GO 
CREATE TABLE [Pengguna].[DftrUser]
    (       
[PenggunaID] [int] IDENTITY(1,1) NOT NULL,
       [Nama] VARCHAR(30) NOT NULL,
       [Password] VARCHAR(30) NOT NULL,
         CONSTRAINT [PK_PenggunaID] PRIMARY KEY CLUSTERED
             ( 
              [PenggunaID] ASC
            )ON [PRIMARY]
    ) ON [PRIMARY];
GO 

CREATE TABLE [Pengguna].[TblPengingat]
    (
        [PengingatID] [int] IDENTITY(1,1) NOT NULL,
       [PenggunaID] [int] NOT NULL,
       [Tgl] DATETIME NOT NULL,
       [SttPengguna] CHAR(1) NOT NULL,
         CONSTRAINT [PK_PengingatID] PRIMARY KEY CLUSTERED
             (
               [PengingatID] ASC
            )ON [PRIMARY]
    ) ON [PRIMARY];
GO

Sekarang kita coba untuk memasukkan data-data yang diperlukan untuk proses diatas dengan menggunakan 1 buah statement tanpa menggunakan trigger

INSERT INTO [Pengguna].[DftrUser] ( Nama, password )
OUTPUT INSERTED.PenggunaID, 
DATEADD(d,7,GETDATE()),'0'INTO[Pengguna].[TblPengingat] 
   (
        PenggunaID,
        Tgl,
        SttPengguna
    )
VALUES  ( 'Suherman','K4taSand1');

dan berikut hasilnya :

select * from [Pengguna].[DftrUser]
Go
select * from [Pengguna].[TblPengingat]
Go

tampak bahwa data telah masuk ke kedua tabel tersebut dengan hanya menggunakan 1 statement DML saja.

Demikian semoga bermanfaat.

admin

Recent Posts

Workshop GIS di PT. AIR MINUM INTAN BANJAR (PERSERODA)

Alhamdulillah telah dipercaya untuk memberikan workshop GIS dengan menggunakan perangkat lunak QGIS di PT. AIR…

3 years ago

Workshop GIS di PERUMDA AM Tirta Ratu Samban

Terimakasih atas kepercayaannya kepada kami sehingga terselenggara Workshop QGIS utk PERUMDA AM Tirta Ratu Samba…

3 years ago

Workshop QGIS Online di Tirta Kahuripan

terimakasih atas kepercayaan Perumda Tirta Kahuripan Kab Bogor kepada saya utk mengimplementasikan GIS Online yang…

3 years ago

Digitasi Vector Menggunakan Spesific Length, Angles or Coordinates

Para operator #GIS kadang mendapatkan sebuah gambar situasi yang diperoleh dari kondisi dilapangan yang kemudian…

4 years ago

Video Seri Belajar Snapping di QGIS

Snapping di QGIS. teknik ini sifatnya wajib untuk dikuasai oleh para operator QGIS dalam kegiatan…

4 years ago

Video Seri Belajar EPANET

Epanet (Environmental Protection Agency Network ) adalah sebuah program komputer yang memiliki kemampuan melaksanakan simulasi…

4 years ago