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

  • FailArmy U

    FailArmy U

    29 AĞUSTOS 2009
  • infiniTuts

    infiniTuts

    18 Ocak 2012
  • Moodle

    Moodle

    11 Mayıs 2010