SORU
1 AĞUSTOS 2008, Cuma


MySQL YERİNE SQL Server 2005 uygulama İÇİNE?

MySQL inanılmaz faydalı henüz REPLACE INTO properitary bu SQL Komutu vardır.

Merak ediyorum: bu kolayca SQL Server 2005 öykünülen?

Bir başlangıç yeni bir Hareket, ne bir Select() ve sonra da UPDATE INSERT COMMIT her zaman biraz acı, hele hele işin içinde uygulama ve bu nedenle her zaman tutmak 2 sürümleri deyim.

Eğer kolay bir ve olup olmadığını merak ediyorumevrenselSQL Server 2005 gibi bir işlevi gerçekleştirmek için bir yol?

CEVAP
15 AĞUSTOS 2008, Cuma


Bu MSSQL (rant on my blog) ilgili sinirimi bozan bir şey. upsert MSSQL destekli diliyorum.

@Dillie-O kodu iyi bir şekilde eski sürümleri SQL ( 1 oy), ama yine de temelde iki IO işlemleri (exists ve update insert)

Temelde this post, biraz daha iyi bir yolu var:

--try an update
update tablename 
set field1 = 'new value',
    field2 = 'different value',
    ...
where idfield = 7

--insert if failed
if @@rowcount = 0 and @@error = 0
    insert into tablename 
           ( idfield, field1, field2, ... )
    values ( 7, 'value one', 'another value', ... )

Bu bir eklerseniz eğer bir güncelleme varsa bir IO işlemleri, iki ya da azaltır.

MS Sql2008 tanıtır SQL merge: 2003 standardı:

merge tablename as target
using (values ('new value', 'different value'))
    as source (field1, field2)
    on target.idfield = 7
when matched then
    update
    set field1 = source.field1,
        field2 = source.field2,
        ...
when not matched then
    insert ( idfield, field1, field2, ... )
    values ( 7,  source.field1, source.field2, ... )

Şimdi gerçekten sadece bir IO işlemi, ama kötü kod :-(

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ChrisCrossMedia

    ChrisCrossMe

    17 EYLÜL 2009
  • Kupa World

    Kupa World

    1 EYLÜL 2011
  • Pepsi

    Pepsi

    1 Kasım 2005