View Full Version : ایجاد محدودیت در نگهداری رکوردها
abasfar
دوشنبه 14 مرداد 1392, 19:16 عصر
با سلام
شاید سوالم تکراری باشه اما من چیزی پیدا نکردم ممنون میشم کمک کنید
من میخوام فقط 200 تا رکورد تو دیتا بیس ذخیره کنم یعنی اگر من 200 تا رکورد تو دیتا بیس داشته باشم و یک رکورد جدید ثبت کنم قدیمی ترین رکورد که رکورد 1 میشه حذف بشه
فقط من بهترین کد (بهینه ترین کد) رو میخوام تا توی یک تریگر بنویسم
با تشکر
علی فتحی
دوشنبه 14 مرداد 1392, 19:34 عصر
if (datag....row.count<200)
mesegbox.show())
محمد سلیم آبادی
دوشنبه 14 مرداد 1392, 19:37 عصر
این کار با تریگر امکان پذیر هست.
فقط من بهترین کد (بهینه ترین کد) رو میخوام تا توی یک تراگت بنویسم
تراگت چیه؟
بحث مهم در اینجا اینه که همیشه یکی یکی رکورد ها در جدول درج نمیشن ممکنه با یک دستور Insert چندین سطر در جدول درج بشن اون وقت قضیه چه طور خواهد بود؟
من یک تریگر بر اساس نیازتون نوشتم. ابتدا بررسی میشه که تنها قرار است یک رکورد درج بشه نه بیشتر و دو حالت بوجود میاد اگر تعداد سطرهای جدول قبلا به 200 تا رسیده بود میاییم ابتدا قدیمی ترین سطرز را بر اساس id درج شده انتخاب میکنیم و حذفش میکنیم سپس سطر جدید رو درج می کنیم. و در حالت دوم اینه که تعداد سطرها به 200 تا نرسیده و میتونیم با خیال راحت سطر جدید رو بدون اینکه سطری رو حذف کنیم درج کنیم به این شکل:
(من تست نکردم ممکنه از نظر syntax مشکل داشته باشه. به جای table_name نام جدولتون رو قرار بدین)
create trigger trigger_name
on table_name
instead of insert
as
if (select count(*) from inserted) = 1
if (select count(*) from table_name) = 200
begin
delete from table_name
where id = (select min(id) from table_name)
insert into table_name
select * from inserted
end
else inser into table_name select * from inserted
go
abasfar
چهارشنبه 16 مرداد 1392, 15:25 عصر
با تشکر از پاسخ شما
بله منظورم تریگر است با تبلت تایپ شده دیکشنری تبلت تغییرش داده :خجالت:
ممنون میشم در صورت امکان به سوال زیر هم پاسخ بدید با تشکر
http://barnamenevis.org/showthread.php?412913-%D9%86%D8%AD%D9%88%DB%8C-%D8%B9%D8%A8%D9%88%D8%B1-%D8%A7%D8%B2-Firewall-%D9%88-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Sql-Server-%D8%AF%D8%B1-%D8%B3%D8%B1%D9%88%D8%B1&p=1843300
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.