@MrBrue
sdsdsd

Как сделать правильную конкатенацию при создании триггера в MySQL?

В базе имеется, столбец с id определенных тем, нужно реализовать триггер, который при каждом добавлении записи, будет в этой таблице менять счетчик, а id тем добавляются через запятую, чтобы было удобно сделать выборку с помощью IN.

Подскажите пожалуйста, как сделать правильную конкатенацию, либо сделать правильно другим способом.
Версия MySQL 5.6.

Таблицы:
iCreateTable('posts', array(
	'id' => 'INT(250) PRIMARY KEY AUTO_INCREMENT',
	'title' => 'VARCHAR(200)',
	'text' => 'LONGTEXT',
	'authorId' => 'INT(250)',
	'themesId' => 'VARCHAR(255)',
	'authorIdEdit' => 'INT(250)',
	'date' => 'DATETIME',
	'dateEdit' => 'DATETIME'
));

iCreateTable('themes', array(
	'id' => 'INT(250) PRIMARY KEY AUTO_INCREMENT',
	'title' => 'TEXT',
	'low_title' => 'TEXT',
	'count_posts' => 'INT(250) DEFAULT 0 NOT NULL',
	'authorId' => 'INT(250)',
	'authorIdEdit' => 'INT(250)',
	'date' => 'DATETIME',
	'dateEdit' => 'DATETIME'
));


Создание триггера:
DELIMITER $$
CREATE TRIGGER incCountPostsTheme 
BEFORE INSERT ON posts
FOR EACH ROW 
BEGIN
	@Expression = 'UPDATE themes SET count_posts = count_posts + 1 WHERE id IN (' + NEW.themesId + ');';
	PREPARE myquery FROM @Expression;
	EXECUTE myquery;
END; $$
DELIMITER ;
  • Вопрос задан
  • 29 просмотров
Пригласить эксперта
Ответы на вопрос 1
YekitKsv
@YekitKsv
DevOps
Используйте связь таблиц многие ко многим и сразу станет понятно, что вы делаете не так. Как реализовать такую связь написано 100500 статей, ищите в гугле.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы