SORU
1 Kasım 2010, PAZARTESİ


İsim: eklerseniz zaten yok

Python PostgreSQL veritabanına yazmak için kullanıyorum:

sql_string = "INSERT INTO hundred (name,name_slug,status) VALUES ("
sql_string  = hundred   ", '"   hundred_slug   "', "   status   ");"
cursor.execute(sql_string)

Ama benim satır aynı olduğu için aşağıdaki hatayı alıyorum:

psycopg2.IntegrityError: duplicate key value  
  violates unique constraint "hundred_pkey"

Nasıl bir yazmak bu satır zaten' SQL deyimi? yoksa 'EKLEME yapabilirim

Bu tavsiye gibi karmaşık ifadeleri gördüm:

IF EXISTS (SELECT * FROM invoices WHERE invoiceid = '12345')
UPDATE invoices SET billed = 'TRUE' WHERE invoiceid = '12345'
ELSE
INSERT INTO invoices (invoiceid, billed) VALUES ('12345', 'TRUE')
END IF

Ama öncelikle, ihtiyacım olan ne, bu çok tehlikeli, ve ikinci olarak, ne kadar basit bir dize olarak bir tane çalıştırabilir miyim?

CEVAP
12 Kasım 2012, PAZARTESİ


Nasıl bir yazmak bu satır zaten' SQL deyimi? yoksa 'EKLEME yapabilirim

PostgreSQL koşullu EKLE yapmanın güzel bir yolu var:

INSERT INTO example_table
    (id, name)
SELECT 1, 'John'
WHERE
    NOT EXISTS (
        SELECT id FROM example_table WHERE id = 1
    );

UYARIBu yaklaşım, 0 güvenilir değildireşzamanlıişlemleri, yazacak. NOT EXISTS anti-semi-birleştirmek SELECT INSERT kendisi arasında çok küçük bir yarış durumu vardır.olabilirbu koşullar altında başarısız.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Edge-CGI 3D Tutorials and more!

    Edge-CGI 3D

    11 HAZİRAN 2013
  • jagadambarecords

    jagadambarec

    13 AĞUSTOS 2008
  • JTechTalk

    JTechTalk

    11 Temmuz 2010