mysql тригер.

Discussion in 'PHP' started by barnaki, 30 Dec 2010.

  1. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    130
    Reputations:
    4
    mysql тригер или функция или процедура

    добрый вечер всем. задача следующая. надо делать около 50 Insert запросов для разных id но insert ы не отличаюся. писать 50 запросов как то не то. думаю написать тригер. вопрос. что лучше тригер писать или функцию. и если у кого есть исходник тригера или функции mysql с циклом то скиньте плиз. и как в этот тригер передать начальный Id и конечный.
     
    #1 barnaki, 30 Dec 2010
    Last edited: 30 Dec 2010
  2. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    130
    Reputations:
    4
    ну как то так у меня выходит может кто поправит
    /////////////////////////////////////////
    delimiter //

    CREATE PROCEDURE insert_into_prices(start INT,end INT)
    -> BEGIN
    ->
    -> DECLARE start int,end int;
    -> SET i=start;
    -> loop1: WHILE i<=end DO
    -> INSERT INTO `prices` (`id_pric`, `id_p`, `service_p`, `price_p`, `sort`, `spare_part`, `price_sp`) VALUES
    (DEFAULT, i, 'Ремонт одной кнопки на клавиатуре', '190', 0, 'цена одной кнопки', 2800),
    -> SET i=i+1;
    -> END WHILE loop1;
    -> END//
    delimiter ;
    //////////////////////
    call insert_into_prices(начальное значение id ,конечное значение id);
     
    #2 barnaki, 30 Dec 2010
    Last edited: 30 Dec 2010
  3. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    barnaki зачем делать сложным то, что проще простого?
    Code:
    INSERT INTO `tabl`(`id`,`name`,`value`) VALUES
    (1, 'tratata1', 'bebebe1'),
    (2, 'tratata2', 'bebebe2'),
    (3, 'tratata3', 'bebebe3'),
    (4, 'tratata4', 'bebebe4'),
    (5, 'tratata5', 'bebebe5')
    
     
    _________________________
  4. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    130
    Reputations:
    4
    2 Gifts. просто это не 1 раз надо вставить. а постоянно надо будет по многу значений вставлять. и запарно каждый раз по 50 строк писать.
     
  5. LStr1ke

    LStr1ke Elder - Старейшина

    Joined:
    29 Jul 2009
    Messages:
    800
    Likes Received:
    145
    Reputations:
    73
    Чета я не понимаю смысла цикла этого. Меняется только значение id. Смысл, если можно в томже php создать цикл и формировать запрос к БД, как написал Gifts
     
  6. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    130
    Reputations:
    4
    не чувак попросил это без php реализовать
     
  7. barnaki

    barnaki Elder - Старейшина

    Joined:
    2 Nov 2008
    Messages:
    676
    Likes Received:
    130
    Reputations:
    4
    вот как правильно и все работает

    DELIMITER //

    CREATE PROCEDURE insert_into_prices(IN start_value INT,IN end_value INT)
    BEGIN
    DECLARE i INT;
    SET i=start_value;
    WHILE i<= end_value DO
    INSERT INTO prices (`id_pric`,`id_p`,`service_p`,`price_p`,`sort`,`spare_part`,`price_sp`) VALUES
    (DEFAULT, i, 'Ремонт одной кнопки на клавиатуре', '190', 0, 'цена одной кнопки', 2800);
    SET i=i+1;
    END WHILE ;
    END
    //
    DELIMITER ;
    CALL insert_into_prices(1,50);