Sıralama: Administration
Gruplar: Administrators
Katılan: 6.05.2014(UTC) Mesajlar: 670
19 Kere Teşekkür Etti. 152 Mesajına Toplam 253 Kere Teşekkür Edildi.
|
Originally Posted by: siyano Selamlar,
Benim bir problemim var,
3 tane tablom var; biri register bunda registerId, name ve value columnları var. diğeri range tablom buradada rangeId, minValue ve maxValue columnlarım var. son olarakta logs tablom var burada ise logId, registerId, addedDate ve Durum columlarım var.
Yapmak istediğim şu trigger ile; register tablosunda update olduğunda value değerini alıp range tablosundaki min value ve max value ile kıyaslayıp eğer min ve max arasındaysa bu value değeri gidip log tablosuna durum columnu başarılı diye kaydetmek değilse yine logs tablosuna başarısız diye kaydetmek.
Ornek tablo Register 1, "Test", 1500 id, name, value
range 1, 1000, 5000 id,minValue,maxValue
diyeceğimki eğer register tablosundaki value değeri update olursan yani 1500'ü adam 2000 yaparsa git range tablosunda min ve max değerlerine bak bu aralıktaysa loga başarılı diye kaydet değilse başarısız diye kaydet registerId'yide yazdır ki hangi registerIdye ait oldugu belli olsun.
Sorum bu tam olarak umarım anlatabilmişimdir. Yardımcı olursanız çok sevinirim. Merhabalar Tablolarında sıkıntı var, bence range register tablosuna bir adet rangeId koyman lazım ama ben senin verdiğin sekilde yaptım elle range id yi 1 verdim Kod:
CREATE TABLE den_register
( registerId INT , name VARCHAR(10),
value INT )
CREATE TABLE den_range (
rangeId INT , minValue INT, maxValue INT)
CREATE TABLE den_logs(
logId INT IDENTITY(1,1), registerId INT, addedDate DATE,Durum INT )
INSERT INTO den_register
SELECT 1,'AAA',10
INSERT INTO den_range
SELECT 1,5,15
INSERT INTO den_logs
SELECT 1,'2015-08-10',1
-- Durum 1 = OK , 0 = FALSE
CREATE TRIGGER dbo.Kontrol ON den_register
AFTER UPDATE
AS
BEGIN
DECLARE @Sonuc INT,
@Guncellenen INT,
@RegisterId INT
SELECT @Guncellenen = value FROM inserted
SELECT @RegisterId = registerId FROM inserted
if(@Guncellenen between (select minValue from den_range Where rangeId = 1 ) and (select maxValue from den_range where rangeId = 1))
begin
INSERT INTO den_logs ( registerId , addedDate ,Durum ) values (@RegisterId,getdate(),1)
end
else
begin
INSERT INTO den_logs ( registerId , addedDate ,Durum ) values (@RegisterId,getdate(),0)
end
END
update den_register
set
value = 100
where registerId = 1
select * from den_register
select * from den_logs
update den_register
set
value = 5
where registerId = 1
select * from den_register
select * from den_logs
Bu senin işini çözer |
Sql Server 2016 Eğitimiz 19 Mayıs tarihinde başlayacaktır. 32 Saat Olup Ücret 1450 TL + KDV'dir. Kayıt ve ayrıntılar için tıklayınıztwitter.com/dbakademi Dua ve teşekkür en büyük servetlere bedel... |