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

  • girleffect

    girleffect

    20 Mayıs 2008
  • Learn Math Tutorials

    Learn Math T

    20 Kasım 2011
  • Sorikan

    Sorikan

    3 ŞUBAT 2008