2009-07-24 27 views
7

sqlite3'ü python ile kullanmayı öğreniyorum. Takip ettiğim ders kitabındaki örnek, her bir Ülke kaydının bir Bölge, Ülke ve Nüfus olduğu bir veritabanıdır.Bu CREATE TABLE deyiminde CONSTRAINT anahtar kelimesi ne yapar?

kitap diyor ki:

aşağıdaki pasajı belirtmek için CONSTRAıNT'I anahtar sözcüğü kullanan söz konusu tabloda hiçbir iki giriş şimdiye bölge ve ülke için aynı değerlere olacaktır oluşturulan olma:

>>> cur.execute(''' 
CREATE TABLE PopByCountry(
    Region TEXT NOT NULL, 
    Country TEXT NOT NULL, 
    Population INTEGER NOT NULL, 
    CONSTRAINT Country_Key PRIMARY KEY (Region, Country)) 
''') 

Lütfen CONSTRAINT Country_Key'un ne yaptığını açıklar mısınız? Bunu kaldırırsam, PRIMARY KEY deyimi tek başına, her ülkenin o bölge için benzersiz bir adın olmasını sağlar gibi görünüyor.

cevap

9

Country_key yalnızca kısıtlamaya bir ad veriyor. Bunu yapmazsanız, ad sizin için oluşturulacaktır. Bu, tabloda birkaç kısıtlama olduğunda yararlıdır ve bunlardan birini düşürmeniz gerekir. kısıtlama bırakarak için bir örnek olarak

: Eğer ifadeden KISITLAMA Contry_Key atlarsanız, SQL sunucusu sizin için birincil anahtar kısıtlaması için bir isim üretecektir

ALTER TABLE PopByCountry DROP CONSTRAINT Country_Key 
+0

Bu doğru. Gerçek PRIMARY KEY kısıtlaması, CONSTRAINT anahtar sözcüğüyle veya onunla farklı değildir. Anahtar kelime sadece kısıtlamayı tanımlamamızı sağlar. –

+0

Gerçekten hızlı yanıt için teşekkürler. Kısıtlamayı daha sonra düzenlemek/bırakmak için basit bir komut örneği verebilirseniz, bunu cevap olarak işaretleyeceğim. –

+0

Daha önce yanlış yazdığım çıktı. Kısıtlamaları yalnızca bırakabilirsiniz, doğrudan düzenlemeyebilirsiniz. Ancak, birini bırakıp bir tane daha ekleyebilirsiniz (aslında bir düzenleme yaparsınız) –

1

(birincil anahtar kısıtlaması türüdür).

Özellikle CONSTRAINT'ı sorguya koyarak temel anahtar kısıtınız için bir ad belirliyorsunuz.