Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Procedura tworzaca triggery w mysql, execute Trigger in procedure
max72
post 8.09.2014, 23:13:18
Post #1





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 8.09.2014

Ostrzeżenie: (0%)
-----


Witam.
Czy w mysql jest mozliwe utworzenie procedury tworzącej triggery?
coś w rodzaju -

Kod
PROCEDURE insert_trigger_history (IN base VARCHAR(50),IN table VARCHAR(255))

BEGIN

DECLARE done INT DEFAULT 0;
DECLARE va VARCHAR(255);
DECLARE coltab CURSOR FOR
SELECT column_name
    FROM information_schema.columns
    WHERE table_schema = base and table_name=table;


DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;

SELECT 'Create insert triiger for table columns' AS info;

OPEN coltab;
SET @i=1;
SET @listtab ='';
SET @listnewtab ='';
SET @trigger ='';

  REPEAT
   FETCH coltab INTO va;
     IF NOT done THEN
        IF @i<>1 THEN
          SET @listtab = CONCAT(@listtab,',');
          SET @listnewtab = CONCAT(@listnewtab,',');
        END IF;
      SET @i = @i+1;
      SET @listtab = CONCAT(@listtab,va);
      SET @listnewtab = CONCAT(@listnewtab,'NEW.',va);
     END IF;
  UNTIL done END REPEAT;
CLOSE coltab;

SET @trigger = CONCAT('
TRIGGER trigger_insert_',table,' AFTER INSERT ON ',table,' FOR EACH ROW
    BEGIN
       INSERT INTO history_',table,' (@listtab)
       VALUES (@listnewtab);
    END;
');

PREPARE QUERY FROM @trigger;
EXECUTE QUERY;
DEALLOCATE PREPARE QUERY;

END//

DELIMITER;



Ewentualnie jaka jest alternatywa aby utworzyć z automatu triigery dla wszystkich tabel?
Dzięki za pomoc - bo walcze juz z tym długo.
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 3)
Pyton_000
post 9.09.2014, 10:49:53
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


wygenerować sobie skryptem w PHP wink.gif
Go to the top of the page
+Quote Post
phpion
post 9.09.2014, 12:42:13
Post #3





Grupa: Moderatorzy
Postów: 6 072
Pomógł: 861
Dołączył: 10.12.2003
Skąd: Dąbrowa Górnicza




Pamiętaj przy tym, że w MySQL możliwy jest tylko 1 trigger na 1 zdarzenie (w obrębie tabeli).
Go to the top of the page
+Quote Post
max72
post 9.09.2014, 21:27:13
Post #4





Grupa: Zarejestrowani
Postów: 2
Pomógł: 0
Dołączył: 8.09.2014

Ostrzeżenie: (0%)
-----


No niestety musi to być zrobiobe z poziomu mysql'a bez skryptów php, perl czy shell'a
Myslałem jeszcze aby w jakis sposób zapisać definicje trigera w pamieci albo pliku a potem wykonac jako sql, ale nie bardzo wiem jak to zrobić.
przy tym zadaniu sie zapetliłem :-) i nie mogę nic twórczego wymysleć.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 20:38