نمایش نتایج 1 تا 24 از 24

نام تاپیک: رکورد یکتا

  1. #1
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339

    Tick رکورد یکتا

    سلام من می خوام تو تعداد رکورد های یک فیلد که از 0و 1 تشکیل شدند فقط یک رکورد دارای 1 باشم یعنی اگه یکی از فیلد هام رکورد اکتیوش 1 باشه مابقی رکورد هام نتونن 1 باشن ولی 0 چرا و در صورتی بتونن یک بشن که همه 0 باشه باید چی کار کنم این کار سمت رکورد دیتابیس باید انجام بشه یا سمت اپلیکیشن

  2. #2
    این کار سمت رکورد دیتابیس باید انجام بشه یا سمت اپلیکیشن
    مطمئنا سمت دیتابیس. و با استفاده از تریگر.
    تریگر ها رو مطالعه کنید:

    Triggers

  3. #3
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339
    دوستان یک توضیح فارسی در مورد این مطلب ندارید اگه لطف کنید و فارسی برام بزارید یا منبع فارسیشو معرفی کنید متشکر می شم

  4. #4
    ببینید تریگر در ارتباط با یک جدول هست و زمانی که event خاصی روی جدل اتفاق بیفته فراخوانی میشه. مثلا هرزمانی قرار باشه جدول شما update باشه یک تریگر مربوط به update می تونید بنویسید که فراخوانی بشه.
    کد مثال هم توی لینکی که دادم هست و نیاز به توضیح فارسی نداره.

  5. #5
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339
    mysql> CREATE TABLE account (acct_num INT, amount DECIMAL(10,2));
    mysql> CREATE TRIGGER ins_sum BEFORE INSERT ON account
    -> FOR EACH ROW SET @sum = @sum + NEW.amount;

    این مثال رو دیدم ولی خوب الان من موندم کجای این دستورات مقادیر خودمو باید بزارم دوست عزیز

  6. #6
    الان من موندم کجای این دستورات مقادیر خودمو باید بزارم
    خط دوم و سوم اسکریپت تولید تریگر هست. این مثال مربوط به تریگری روی جدول account هست(که در خط 1 تولید شده) ، که این تریگر هنگام Insert دیتا در جدول مجموع فیلد amount رو حساب می کنه.
    شما برای کار خودتون باید تریگری بنویسید که هنگام Update یا insert چک کنه که اگه یک رکورد که مقدار فیلد active اش 1 هست وجود داره دیگه نتونه 1 اینتسرت یا آپدیت کنه.

  7. #7
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339
    دوست عزیز اگه لطف کنی و یه مثال برام بنویسی خیلی بهتره چون من اینجوری هرچی تلاش کردم فایده ای نداشت یک لطف کن و این کار رو برای من بکن

  8. #8
    دوست عزیز اگه لطف کنی و یه مثال برام بنویسی خیلی بهتره چون من اینجوری هرچی تلاش کردم فایده ای نداشت یک لطف کن و این کار رو برای من بکن
    این هم کد. البته تست نشده شاید ایراد سینتکس داشته باشه که خودتون می تونید حلش کنید.
    CREATE TABLE Mytable(
    a1 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    a2 INT DEFAULT 0
    );


    CREATE TRIGGER testtrigger BEFORE INSERT ON Mytable
    FOR EACH ROW
    BEGIN
    IF (SELECT MAX(a2) FROM myTable)>0 THEN
    IF NEW.a2=1 THEN
    RETURN FALSE;
    END IF;
    END IF;
    END;

  9. #9
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339
    دوست عزیز از لطفت متشکرم حالا برای اینکه اینو تو پی اچ پی پیادش کنم باید کد زیر رو به عنوان کوئری معرفی کنم
    CREATE TRIGGER testtrigger BEFORE INSERT ON Mytable
    FOR EACH ROW
    BEGIN
    IF (SELECT MAX(a2) FROM myTable)>0 THEN
    IF NEW.a2=1 THEN
    RETURN FALSE;
    END IF;
    END IF;
    END;

  10. #10
    [QUOTE]حالا برای اینکه اینو تو پی اچ پی پیادش کنم باید کد زیر رو به عنوان کوئری معرفی کنم[/
    QUOTE]
    خیر دوست عزیز این کدی که من گفتم مربوط به MYSql است و نیاز به پیاده سازی از سمت php نداره . فقط کافیه در MySql console یا در محیط های اسکریپت phpmyadmin و دیگر محیط های مدیریت mysql اجرا بشه.
    برای دفعات بعدی این اسکریپت یک تریگر ایجاد می کنه که مانند یک ایونت هندلر روی جدول شما کار می کنه و در هنگام Insert و update اون شرایطی رو که میخواهید چک می کنه.

  11. #11
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339
    خوب دوست گرامی ببخشید من بیش از حد مزاحم شما دارم می شم برای مای اسکیوال کجا باید اینو پیاده کنم

  12. #12
    خوب دوست گرامی ببخشید من بیش از حد مزاحم شما دارم می شم برای مای اسکیوال کجا باید اینو پیاده کنم
    خواهش می کنم.
    شما از MYSQL به چه صورت استفاده می کنید؟
    یعنی table ها تون رو کجا ایجاد کردید ؟ توی چه محیطی؟ از توی همون محیط

  13. #13
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339
    آره از تو خود مای اسکیوال به صورت دستی تک تک درست کردم بدون کد نویسی

  14. #14
    آره از تو خود مای اسکیوال به صورت دستی تک تک درست کردم بدون کد نویسی
    ببینید دوست عزیز خود MYSQL که اینترفیس نداره. در واقع Mysql یک database engine هست و رابط کاربری ای نداره که شما از داخل اون بتونید جدول اضافه کنید.
    1-پس شما یا باید با کدنویسی در MYSQL Console اینکار رو انجام داده باشید
    2-یا با Mysql query browser و یا phpMyadmin یا GUI های دیگری که برای mysql طراحی شده اند.
    از اونجایی که شما می گی بدون کدنویسی اینکار رو انجام دادی پس حالت اول بعید به نظر میرسه حالا باید متوجه بشید که از چه GUI ای برای کار با mysql استفاده می کنید.

  15. #15
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339
    ببخشید دوست عزیز من با php myadmin این کار رو انجام دادم

  16. #16
    ببخشید دوست عزیز من با php myadmin این کار رو انجام دادم
    خب حالا توی PHPMyAdmin یک قسمتی داره که شما می تونید کوئری ها تون رو و اسکریپت های SQL تون رو اونجا اجرا کنید دنبال لینکی با عنوان Query یا SQL بگردید.

  17. #17
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339
    با مشکل بر خورد کردم اسم تیبل من azterm است و اسم فیلد مورد نظر من active است

    CREATE TRIGGER testtrigger BEFORE INSERT ON azterm
    FOR EACH ROW
    BEGIN
    IF (SELECT MAX(active) FROM azterm)>0 THEN
    IF NEW.azterm=1 THEN
    RETURN FALSE;
    END IF;
    END IF;
    END;

    این ارور میاد
    You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'TRIGGER testtrigger BEFORE INSERT ON azterm
    FOR EACH ROW
    BEGIN

  18. #18
    چه ورژنی از MySQL استفاده می کنید؟

  19. #19
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339
    + MySQL 4.1.12
    + phpMyAdmin 2.6.2-pl1

  20. #20
    MySQL 4.1.12
    برای استفاده از تریگر باید از MySQL 5.0.2 به بالا استفاده کنید.

  21. #21
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339
    ای بابا حالا برای این مشکل ما هیچ راه دیگه ای وجود نداره

  22. #22
    ای بابا حالا برای این مشکل ما هیچ راه دیگه ای وجود نداره
    چرا دو راه دارید:
    1- MYSQL خودتون رو عوض کنید.
    2- اینکار رو از سمت application انجام بدید (این روش این مشکل رو داره که اگه زمانی یک اسکریپت اینسرت یا آپدیت مستقیما روی دیتابیس اجرا بشه نه از طرف اپلیکیشن شما، دیگه نمیشه روی این شرط شما رو اعمال کرد.) ولی اگه مطمئن هستید که تمام دیتا هندلینگ شما از سمت برنامه خودتون انجام میشه می تونید از این روش استفاده کنید.

  23. #23
    کاربر دائمی آواتار majoran
    تاریخ عضویت
    آبان 1385
    محل زندگی
    شیراز
    پست
    339
    خوب از اونجا که سرور نمیشه عوض شه و همچین کاری رو برای من نمی کنه راه دوم رو انتخاب می کنیم و حتمی باید برم تو قسمت php مشکلمو بیان کنم

  24. #24
    حتمی باید برم تو قسمت php مشکلمو بیان کنم
    بله. درسته. البته به MySql هم مربوط میشه چون خلاصه باید دیتاهای جدولتون توی Mysql رو چک کنید. ولی به دلیل اینکه سمت Php بیشتر نیاز به کد داره بهتره در تالار php مطرح بشه.
    باسپاس

قوانین ایجاد تاپیک در تالار

  • شما نمی توانید تاپیک جدید ایجاد کنید
  • شما نمی توانید به تاپیک ها پاسخ دهید
  • شما نمی توانید ضمیمه ارسال کنید
  • شما نمی توانید پاسخ هایتان را ویرایش کنید
  •