Delphi’de SQL Mükerrer Kayıt Engelleme
Veritabanı yönetim sistemlerinde (DBMS), mükerrer kayıtların önlenmesi veri bütünlüğünü korumak için hayati önem taşır. Delphi, mükerrer kayıtları engellemek için çeşitli mekanizmalar sunar. Bu makale, Delphi’de SQL kullanarak mükerrer kayıtları nasıl engelleyeceğinizi ayrıntılı olarak açıklayacaktır.
Birincil Anahtarlar
Birincil anahtar, bir tablodaki her kaydı benzersiz bir şekilde tanımlayan bir sütun veya sütun grubudur. Birincil anahtar oluşturmak, mükerrer kayıtların eklenmesini önlemenin en basit ve en etkili yoludur.
delphi
CREATE TABLE Kişiler (
ID INTEGER PRIMARY KEY,
Adı VARCHAR(50),
Soyadı VARCHAR(50)
);
Yukarıdaki örnekte, ID
sütunu Kişiler
tablosunun birincil anahtarıdır. Bu, aynı ID
değerine sahip iki kaydın tabloya eklenmesini engelleyecektir.
Benzersiz Anahtarlar
Benzersiz anahtarlar, birincil anahtarlara benzer, ancak bir tablodaki birden fazla sütunu benzersiz bir şekilde tanımlayabilirler. Birincil anahtarın aksine, benzersiz anahtarlar NULL değerlerine izin verebilir.
delphi
CREATE TABLE Ürünler (
ÜrünID INTEGER PRIMARY KEY,
ÜrünAdı VARCHAR(50) UNIQUE,
KategoriID INTEGER
);
Yukarıdaki örnekte, ÜrünAdı
sütunu Ürünler
tablosunun benzersiz bir anahtarıdır. Bu, aynı ÜrünAdı
değerine sahip iki kaydın tabloya eklenmesini engelleyecektir, ancak farklı KategoriID
değerlerine sahip olabilirler.
Kontrol Kısıtlamaları
Kontrol kısıtlamaları, veritabanı tablolarına uygulanan kurallardır. Mükerrer kayıtları engellemek için UNIQUE
ve CHECK
kontrol kısıtlamaları kullanılabilir.
delphi
CREATE TABLE Siparişler (
SiparişID INTEGER PRIMARY KEY,
MüşteriID INTEGER,
ÜrünID INTEGER,
Miktar INTEGER,
CONSTRAINT UK_MüşteriID_ÜrünID UNIQUE (MüşteriID, ÜrünID)
);
Yukarıdaki örnekte, UK_MüşteriID_ÜrünID
kontrol kısıtlaması, aynı MüşteriID
ve ÜrünID
değerlerine sahip iki kaydın Siparişler
tablosuna eklenmesini engelleyecektir.
delphi
CREATE TABLE Öğrenciler (
ÖğrenciID INTEGER PRIMARY KEY,
Adı VARCHAR(50),
Soyadı VARCHAR(50),
DoğumTarihi DATE,
CONSTRAINT CK_DoğumTarihi CHECK (DoğumTarihi < GETDATE())
);
Yukarıdaki örnekte, CK_DoğumTarihi
kontrol kısıtlaması, DoğumTarihi
sütununun geçerli tarihten önceki bir değere sahip olmasını sağlayacaktır. Bu, gelecekteki tarihlerle mükerrer kayıtların eklenmesini engelleyecektir.
Tetikleyiciler
Tetikleyiciler, belirli veritabanı olayları gerçekleştiğinde otomatik olarak yürütülen SQL kod bloklarındır. Mükerrer kayıtları engellemek için INSERT
ve UPDATE
tetikleyicileri kullanılabilir.
delphi
CREATE TRIGGER TR_Kişiler_Insert
ON Kişiler
FOR INSERT
AS
BEGIN
IF EXISTS (SELECT 1 FROM Kişiler WHERE Adı = NEW.Adı AND Soyadı = NEW.Soyadı)
BEGIN
RAISE EXCEPTION 'Bu kişi zaten kayıtlı.';
END;
END;
Yukarıdaki tetikleyici, Kişiler
tablosuna yeni bir kayıt eklendiğinde çalışır. Aynı Adı
ve Soyadı
değerlerine sahip bir kayıt zaten varsa, tetikleyici bir istisna oluşturacak ve kaydın eklenmesini engelleyecektir.
İlgili Kaynaklar
- Delphi’de Veritabanı Kısıtlamaları
- Delphi’de Tetikleyiciler
- SQL Server’da Mükerrer Kayıtları Engelleme
- MySQL’de Mükerrer Kayıtları Engelleme