Russian TYPO3 community

Russian TYPO3 community (http://forum.typo3.ru/index.php)
-   Разработка расширений / TYPO3 extension development (http://forum.typo3.ru/forumdisplay.php?f=38)
-   -   MySQL trigger (http://forum.typo3.ru/showthread.php?t=8714)

serhio 09.07.2010 11:58

MySQL trigger
 
Добрый день. Ничего по триггерам не нашел по этому создаю новую тему.

Суть проблемы.
Я создаю экст с помощью kickstarter и при создании одной из таблиц возникла необходимость выводить в одном из полей сумму трех других для лучшей ориентации в be (в качестве метки при создании таблицы в kickstarter выбирается только одно поле, а ориентироваться по одному полю в BE не получается надо по значению 3-х полей). Пример:
поля таблицы
поле1
поле2
поле3
поле4 - (только чтение в BE)
поле4=поле1+поле2+поле3

Как это можно сделать?
Есть идея использовать триггер, но его как я понимаю надо прописать в файле SQL запроса экстеншена что бы при установки экст триггер создавался автоматически. У меня этот вариант не пошол, может чтото не так сделал :confused:. В связи с этим вопрос, такой вариант реально сделать?

P.S. просьба строго не судить это мой первый экстеншен. :)

serhio 12.07.2010 15:57

Что жалко подсказать? Сколько времени прошло ни одного ответа. :(

void 13.07.2010 17:18

Насколько я помню, в SQL-файле расширения допустим только определённый SQL, который может распарсить соответствующий класс ядра.
По-хорошему, подобной денормализацией должен заниматься ORM, но встроенного ORM на данный момент в TYPO3 нет.
Поэтому, возможно, вам стоит добавлять этот триггер при инсталляции расширения. Примерно таким образом, каким расширения делают миграцию схемы данных при обновлении до более новой версии. Кажется, в tt_news что-то такое было.

serhio 14.07.2010 01:17

Спасибо за ответ.

Триггер добавил в базу в ручную все работает. На счет инсталляции, пробовал запрос добавлять в файл ext_tables.php и после инсталляции запрос появлялся в файле temp_CACHED_ps5e24_ext_tables.php, если не ошибаюсь. Но триггер так и не создался, скорее всего запрос неправильно прописал, разбираться не стал потому что итак время много потратил да и вручную создал. Направление в котором я шел хоть правильное? На счет "миграции схемы данных" будет сложновато я с тайпой всего пол года знаком, внутренностей практически не знаю.

void 14.07.2010 14:51

Нет, направление неправильное - если вы пропишете свой запрос в ext_tables, то он будет выполняться при каждом запросе, а вам нужно один раз выполнить запрос, чтобы создать триггер.


Часовой пояс GMT +4, время: 20:24.

Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot