Constraint ekle veya devre dışı bırak (FK/CHECK/UNIQUE)
Oracle
-- Foreign key ekle
ALTER TABLE siparis ADD CONSTRAINT fk_musteri FOREIGN KEY (musteri_id) REFERENCES musteri(id);
-- CHECK
ALTER TABLE urun ADD CONSTRAINT chk_fiyat CHECK (fiyat >= 0);
-- Devre dışı bırak / etkinleştir
ALTER TABLE siparis DISABLE CONSTRAINT fk_musteri;
ALTER TABLE siparis ENABLE CONSTRAINT fk_musteri;Oracle constraint'leri DISABLE/ENABLE ile geçici kapatılabilir (toplu yüklemede yararlı). ENABLE VALIDATE mevcut satırları kontrol eder, NOVALIDATE etmez.
PostgreSQL
-- Foreign key ve CHECK
ALTER TABLE siparis ADD CONSTRAINT fk_musteri FOREIGN KEY (musteri_id) REFERENCES musteri(id);
ALTER TABLE urun ADD CONSTRAINT chk_fiyat CHECK (fiyat >= 0);
-- FK'yi devre dışı bırakmak yerine NOT VALID + sonra doğrula
ALTER TABLE siparis ADD CONSTRAINT fk2 FOREIGN KEY (m_id) REFERENCES musteri(id) NOT VALID;
ALTER TABLE siparis VALIDATE CONSTRAINT fk2;
ALTER TABLE siparis DROP CONSTRAINT fk2;PostgreSQL'de constraint DISABLE yoktur. Büyük tabloda lock'u azaltmak için NOT VALID ile ekleyip sonra VALIDATE edilir. ALTER TABLE ... DISABLE TRIGGER ALL FK'nin iç trigger'larını de kapatır ve superuser ister; açık kaldığı sürede eklenen veri hiç doğrulanmaz, yeniden etkinleştirmek de geriye dönük kontrol yapmaz (sessiz bütünlük kaybı riski). Bunun yerine constraint'i DROP edip NOT VALID ile yeniden ekleyin, ardından VALIDATE CONSTRAINT çalıştırın.
MySQL
-- Foreign key ve CHECK
ALTER TABLE siparis ADD CONSTRAINT fk_musteri FOREIGN KEY (musteri_id) REFERENCES musteri(id);
ALTER TABLE urun ADD CONSTRAINT chk_fiyat CHECK (fiyat >= 0);
-- FK kontrolünü oturum genelinde geçici kapat
SET FOREIGN_KEY_CHECKS = 0;
-- ... toplu işlem ...
SET FOREIGN_KEY_CHECKS = 1;InnoDB gerekir. Tek bir constraint'i DISABLE etmek yerine oturum bazlı SET FOREIGN_KEY_CHECKS=0 kullanılır. CHECK constraint'leri MySQL 8.0.16'dan itibaren gerçekten uygulanır (öncesinde yok sayılırdı).
SQL Server
-- Foreign key ve CHECK
ALTER TABLE siparis ADD CONSTRAINT fk_musteri FOREIGN KEY (musteri_id) REFERENCES musteri(id);
ALTER TABLE urun ADD CONSTRAINT chk_fiyat CHECK (fiyat >= 0);
-- Devre dışı / yeniden etkinleştir (WITH CHECK ile doğrula)
ALTER TABLE siparis NOCHECK CONSTRAINT fk_musteri;
ALTER TABLE siparis WITH CHECK CHECK CONSTRAINT fk_musteri;SQL Server'da FK/CHECK constraint'leri NOCHECK CONSTRAINT ile kapatılır. Yeniden açarken WITH CHECK CHECK CONSTRAINT kullanılmazsa constraint 'not trusted' kalır ve sorgu iyileştirici onu kullanamaz.
MongoDB
// Şema doğrulama (validation) kuralları ile kısıt benzeri kontrol
db.runCommand({ collMod: "urun",
validator: { $jsonSchema: { required: ["fiyat"], properties: { fiyat: { bsonType: "number", minimum: 0 } } } },
validationLevel: "strict"
});
// Benzersizlik için unique index
db.musteri.createIndex({ email: 1 }, { unique: true });Foreign key yoktur (uygulama katmanında sağlanır). UNIQUE karşılığı unique index'tir. CHECK yerine $jsonSchema doğrulaması; validationAction: 'warn' ile devre dışı bırakma etkisi elde edilir.
Redis
# Uygulanamaz: Redis'te FK/CHECK/UNIQUE kısıtı yoktur. Benzersizlik için SET veya
# SETNX/koşullu yazım ile uygulama düzeyinde sağlanır.
SET musteri:email:ornek@x.com 1 NXİlişkisel bütünlük ve constraint kavramı yoktur. Benzersizlik SET ... NX (yalnızca yoksa yaz) veya ayrı bir SET/HASH ile kontrol edilerek uygulama tarafında yönetilir.
Elasticsearch
# Uygulanamaz: Elasticsearch'te FK/CHECK yoktur. Alan tipi zorlaması mapping ile,
# tekillik ise sabit _id kullanılarak sağlanır.
PUT urun/_doc/ABC-123
{ "fiyat": 100 }İlişki ve constraint motorda yoktur. Tip kontrolü mapping ile yapılır. UNIQUE etkisi için doğal anahtarı _id olarak vermek (aynı _id üzerine yazılır) veya op_type=create ile çakışmayı reddetmek gerekir.