Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server 2008 - JIKA TIDAK ADA INSERT ELSE UPDATE

Pada pandangan pertama upaya awal Anda tampaknya cukup dekat. Saya berasumsi bahwa clockDate adalah bidang DateTime jadi coba ini:

IF (NOT EXISTS(SELECT * FROM Clock WHERE cast(clockDate as date) = '08/10/2012') 
    AND userName = 'test') 
BEGIN 
    INSERT INTO Clock(clockDate, userName, breakOut) 
    VALUES(GetDate(), 'test', GetDate()) 
END 
ELSE 
BEGIN 
    UPDATE Clock 
    SET breakOut = GetDate()
    WHERE Cast(clockDate AS Date) = '08/10/2012' AND userName = 'test'
END 

Perhatikan bahwa getdate memberi Anda tanggal saat ini. Jika Anda mencoba membandingkan dengan tanggal (tanpa waktu), Anda perlu mentransmisikan atau elemen waktu akan menyebabkan perbandingan gagal.

Jika clockDate BUKAN bidang datetime (hanya tanggal), maka mesin SQL akan melakukannya untuk Anda - tidak perlu menggunakan pernyataan set/insert.

IF (NOT EXISTS(SELECT * FROM Clock WHERE clockDate = '08/10/2012') 
    AND userName = 'test') 
BEGIN 
    INSERT INTO Clock(clockDate, userName, breakOut) 
    VALUES(GetDate(), 'test', GetDate()) 
END 
ELSE 
BEGIN 
    UPDATE Clock 
    SET breakOut = GetDate()
    WHERE clockDate = '08/10/2012' AND userName = 'test'
END 

Seperti yang telah ditunjukkan orang lain, pernyataan gabungan adalah cara lain untuk mengatasi logika yang sama ini. Namun, dalam beberapa kasus, terutama dengan kumpulan data yang besar, pernyataan penggabungan bisa sangat lambat, menyebabkan banyak aktivitas tranlog. Jadi mengetahui bagaimana logikanya seperti yang ditunjukkan di atas masih merupakan teknik yang valid.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan substring di SQL Server

  2. Bagaimana cara membagi string menjadi variabel di sql?

  3. Tipe data untuk menyimpan alamat ip di SQL Server

  4. Penyedia OLE DB Microsoft.ACE.OLEDB.12.0 untuk server tertaut (null) pesan yang dikembalikan Bookmark tidak valid.

  5. Mengekspor kolom gambar ke file pdf di server sql?