MySQL veritabanındaki birincil anahtarlar için "NOT NULL" kısıtlamalarını bildirmek gerekli midir? Birincil anahtar NULL değerlerine sahip olamaz, çünkü auto_increments zaten ve alan kaydını otomatik olarak doldurur. Yani, bu, birincil anahtarlarım için "NOT NULL" kısıtlamasını kaldırabileceğim anlamına mı geliyor?MySQL - Ana anahtarlar için "NULL değil" kısıtlaması var mı?
cevap
(Sizin soru etiketlidir olarak) MySQL içinde, bunu açıkça yapmanız gerekmez. the manual Gönderen:
Eğer sen netlik için istemeyebilirsiniz anlamına gelmez etmek yok mu sırf TabiiA
PRIMARY KEY
tüm anahtar sütunlarıNOT NULL
olarak tanımlanması gerekir benzersiz endeksidir. AçıkçaNOT NULL
olarak bildirilmezlerse, MySQL onları çok gizli (ve sessizce) olarak bildirir.
, vb
Sadece PK sütunlarını "NULL" olarak değil, aynı zamanda "NULL" olarak nitelendirildiyse, onları "NULL" olarak geçersiz kılar/değiştirir. –
Evet ve hayır Sen, "boş değil" kaldırmasını edebilirsiniz kısıtlamayı kaldırmaz. Şahsen onları içeride bırakırdım, onları dışarı çıkarmaya değecek hiçbir şey kazanamazsın.
Hayır, yapamazsınız. Bir sütun birincil anahtarın parçasıysa, Boş Değil Not kısıtlaması boş olarak değiştirilemez. –
@ypercube "NULL olarak değiştir" demedi, "NOT NULL" u kaldır dedi. Sadece NULL olmayan DDL metninde değil, yürürlükte olduğu anlamına gelmez. –
@Branko: "Tanımdan" NOT NULL "ifadesini kaldırması gerekiyorsa, evet, kabul ediyorum. Tekrar okuma, haklısın, muhtemelen ne anlama geliyordu. –
Birincil anahtar, null sütunları içermemelidir. auto_increment
bir denetim kısıtlaması değildir (varsayılan bir kısıtlamadır), bu nedenle'un varlığından bağımsız olarak birincil anahtarın bir parçası olan sütunun tanımından not null
'u kaldıramazsınız. Mysql'deki birincil anahtar tablosunu oluştururken, not null
yazmanız gerekmez, çünkü motor bu kısıtlamayı otomatik olarak ekler.
Sütunu açıkça boş olarak bildirmemize gerek yoktur, çünkü birincil anahtar kısıtlaması sütunu NULL DEĞİL yapar. Oracle’ı kontrol ettim.
Sütunda bulunanlar _does değil hurt_ ve tablo tanımını okurken _explicit_ şeyler yapar. Gelecekte, birincil anahtar kısıtlamasını değiştirirseniz, hala "NOT NULL" kısıtlamasına sahip olursunuz. – Oded
İçinde olmaması gereken iki kavram var. Bir birincil anahtarın bir otomatik arttırma sütunu olması gerekmez, ne de (bir tablonun bir tane varsa) bir birincil arttırma sütununun birincil anahtar olması gerekir. Sadece birlikte kullanılmaları * eğilimindikleri için aynı şey oldukları anlamına gelmez. –