Динамическое удаление записей, когда определенные столбцы = 0;очистка данных - PullRequest
0 голосов
/ 14 января 2011

У меня есть простой карточный стол:

CREATE TABLE `users_individual_cards` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `user_id` char(36) NOT NULL,
  `individual_card_id` int(11) NOT NULL,
  `own` int(10) unsigned NOT NULL,
  `want` int(10) unsigned NOT NULL,
  `trade` int(10) unsigned NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `user_id` (`user_id`,`individual_card_id`),
  KEY `user_id_2` (`user_id`),
  KEY `individual_card_id` (`individual_card_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

У меня есть ajax для добавления и удаления записей, основанных на OWN, WANT и TRADE. Однако, если пользователь удаляет все карты OWN, WANT и TRADE, они сбрасываются в ноль, но это оставляет запись в базе данных. Я бы предпочел удалить запись. Проверяется ли после каждого «обновления», чтобы увидеть, все ли столбцы = 0, единственный способ сделать это? Или я могу установить условный триггер что-то вроде:

//psuedo sql
AFTER update IF (OWN = 0, WANT = 0, TRADE = 0) DELETE

Каков наилучший способ сделать это? Можете ли вы помочь с синтаксисом?

Ответы [ 2 ]

1 голос
/ 14 января 2011

Триггер будет:


CREATE TRIGGER users_individual_cards_trigger
    AFTER UPDATE ON users_individual_cards
    FOR EACH ROW
    BEGIN
    DELETE FROM users_individual_cards
    WHERE 'OWN' = 0 AND 'WANT' = 0 AND 'TRADE' = 0;
    END$$

Решения, которые выбрасывают запрос на удаление, будут лучше, потому что не все версии mysql поддерживают его.

1 голос
/ 14 января 2011

Почему бы просто не запустить два запроса из PHP (или другого интерфейса)?

update `users_individual_cards` ...
delete `users_individual_cards` where ... (same condition) and own + want + trade = 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...