View Full Version : سوال: مشکل با حذف خودکار رکورد با شرط از بانک
ghamgin
جمعه 13 اردیبهشت 1392, 11:21 صبح
سلام
چکار کنم که وقتی تعداد رکودهای بانک (sql) مثلا 50 تا شد
(البته شماره id ها پشت سر هم نیست و ممکنه چند تا بین شون پاک شده باشه مثلا 1 2 4 8 ..)
خودکار 20 تا رکورد اول جدول توی بانک پاک بشه(یعنی قدیم ها پاک شه)
ممنون
Me3ter
جمعه 13 اردیبهشت 1392, 11:37 صبح
سلام
DELETE TOP (20)
FROM TblName
WHERE sharteto benevis age shart dare;
khayyams.votary
جمعه 13 اردیبهشت 1392, 15:47 عصر
شما میتونید در بانکتون برای اون جدول خواص یک تیریگر ایجاد کنید که به صورت خودکار بعد از هر عمل insert جدول رو چک کنه و اگه به مقدار مورد نظر شما رسیده بود عمل مورد نظر شما رو انجام بده
create trigger tri_inserts on (a)
after insert
as
if (select count(*) from TblName)>50
begin
DELETE TOP (20) FROM TblName
end
asemaneiran
جمعه 13 اردیبهشت 1392, 16:54 عصر
شما میتونید در بانکتون برای اون جدول خواص یک تیریگر ایجاد کنید که به صورت خودکار بعد از هر عمل insert جدول رو چک کنه و اگه به مقدار مورد نظر شما رسیده بود عمل مورد نظر شما رو انجام بده
create trigger tri_inserts on (a)
after insert
as
if (select count(*) from TblName)>50
begin
DELETE TOP (20) FROM TblName
end
با c# چی میشه؟
ممنون میشم بگید
ghamgin
دوشنبه 16 اردیبهشت 1392, 10:37 صبح
سلام
ممنون
نمونه ای با سی شارپ ندارید؟؟
Rezahak
دوشنبه 16 اردیبهشت 1392, 11:06 صبح
سلام
ممنون
نمونه ای با سی شارپ ندارید؟؟
همین کدی رو که دوستمون نوشت if (select count(*) from TblName)>50
begin
DELETE TOP (20) FROM TblName
end رو به همراه درج رکورد جدید داخل یک stored procedure بنویسید و داخل برنامه از آن استفاده کنید
البته بهتره از همون trigger استفاده کنید .
gilas1368
دوشنبه 16 اردیبهشت 1392, 13:12 عصر
از این استفاده کن
sqlconnection con=new sqlconnection("آدرس پایگاه داده");
sqlcommand com=new sqlcommand("select * from TableName",con);
sqldataadapter da=new sqldataadapter(com);
datatable dt=new datatable();
con.open();
da.fill(dt);
if(dt.rows.count==50)
{
sqlcommand com_delete=new sqlcommand("delete top(20) from TableName",con);
sqldataadapter da_delete=new sqldataadapter(com_delete);
datatable dt_delete=new datatable();
da_delete.fill(dt_delete);
con.close();
}
saeed_sho
دوشنبه 16 اردیبهشت 1392, 15:32 عصر
تریگر خیلی سریع تره و با اختلاف چند هزارم ثانیه انجام میشه
راه اصولیش تریگره
ghamgin
دوشنبه 16 اردیبهشت 1392, 17:13 عصر
ممنون
اما من stored procedure بلد نیستم؟؟:افسرده:
saeed_sho
دوشنبه 16 اردیبهشت 1392, 18:34 عصر
اینو تست کن از همه بهتره
create trigger [dbo].[tr_trigerName]
on table_name
after insert
as
begin
declare @count as int = (select count(*) from table_name)
if (@count >= 30)
begin
delete top (30) from table_name
end
end
ghamgin
سه شنبه 17 اردیبهشت 1392, 10:21 صبح
ممنونم دوست گلم
این با vb بود میشه با سی شارپ راهنمایی کنید و اینکه با stored procedure نباشه؟
و
ایا راهی هست که قبل از حذف اطلاعات(رکوردهای بانک) اونها رو در یک جایی مثل اکسل و یا نوت پد ذخیره کنه؟
(خواهش میکنم یه نمونه کوچک لطف کنید و بذارید)
ممنون میشم
ghamgin
سه شنبه 17 اردیبهشت 1392, 10:23 صبح
ممنونم دوست گلم
این با vb بود میشه با سی شارپ راهنمایی کنید و اینکه با stored procedure نباشه؟
و
ایا راهی هست که قبل از حذف اطلاعات(رکوردهای بانک) اونها رو در یک جایی مثل اکسل و یا نوت پد ذخیره کنه؟
(خواهش میکنم یه نمونه کوچک لطف کنید و بذارید)
ممنون میشم
saeed_sho
سه شنبه 17 اردیبهشت 1392, 19:19 عصر
ممنونم دوست گلم
این با vb بود میشه با سی شارپ راهنمایی کنید و اینکه با stored procedure نباشه؟
و
ایا راهی هست که قبل از حذف اطلاعات(رکوردهای بانک) اونها رو در یک جایی مثل اکسل و یا نوت پد ذخیره کنه؟
(خواهش میکنم یه نمونه کوچک لطف کنید و بذارید)
ممنون میشم
اون کدی که گذاشتم وی بی نبود اون t-sql و در دیتابیس مینویسن
ghamgin
چهارشنبه 18 اردیبهشت 1392, 10:41 صبح
میشه یه نمونه کوچیک بذارید؟
ممنون
ghamgin
پنج شنبه 19 اردیبهشت 1392, 10:01 صبح
کسی نمونه نداره؟؟
mousa1992
پنج شنبه 19 اردیبهشت 1392, 11:34 صبح
سلام trigger ها فک نکنم توی بانک های اطلاعاتی express جواب بده اگه میخوای همین عمل رو توی سی شارپ پیاده سازی کنی زحمتت زیاد میشه و باید بعد از هر بار ثبت داده ی کوئری هم بنویسی و بفرستی برای حذف رکوردهایی که باید حذف بشه - مقابل یادگیری مطالب جدید مقاومت نکن - برو تریگر هارو یاد بگیر و همینطور پروسیجر ها - خیلی سادست
موفق باشی
vBulletin® v4.2.5, Copyright ©2000-1403, Jelsoft Enterprises Ltd.