logo


Welcome Guest! To enable all features please Giriş or Kayıt.

Bildirim

Icon
Error

Ayarlar
Son mesaja git Go to first unread
siyano  
#1 Gönderildi : 7 Ağustos 2015 Cuma 13:57:39(UTC)
siyano

Sıralama: Newbie

Gruplar: Registered
Katılan: 7.08.2015(UTC)
Mesajlar: 1
Turkey
Konum: İzmir

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.
mehmetzekikir  
#2 Gönderildi : 10 Ağustos 2015 Pazartesi 13:57:19(UTC)
mehmetzekikir

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 Go to Quoted Post
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ız

twitter.com/dbakademi
Dua ve teşekkür en büyük servetlere bedel...


Bu konudaki kullanıcılar
Guest
Forumu Atla  
Bu foruma yeni konular postalayamazsınız.
Bu forumda ki konulara yeni posta gönderemezsiniz.
Bu forumdaki postalarınızı silemezsiniz.
Bu forumdaki postalarınızı düzenleyemezsiniz.
Bu forumda anketler yaratamazsınız.
Bu forumdaki anketlere oy veremezsiniz.