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

  • Google Developers

    Google Devel

    23 AĞUSTOS 2007
  • jesiel santos

    jesiel santo

    15 Ocak 2009
  • Crossover

    Crossover

    18 HAZİRAN 2007