Delphi Sql Mükerrer Kaydı Engelleme

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


Yayımlandı