CREATE TABLE `inventory` (
`id` int(11) NOT NULL,
`owner` int(11) DEFAULT NULL,
`grade1` int(11) DEFAULT NULL,
`grade2` int(11) NOT NULL,
`grade3` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `inventory`
--
INSERT INTO `inventory` (`id`, `owner`, `grade1`, `grade2`, `grade3`) VALUES
(3, 1, 2, 1, 1);
-- --------------------------------------------------------
--
-- Table structure for table `transfer`
--
CREATE TABLE `transfer` (
`id` int(11) NOT NULL,
`owner` int(11) DEFAULT NULL,
`total` char(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
--
-- Dumping data for table `transfer`
--
INSERT INTO `transfer` (`id`, `owner`, `total`) VALUES
(20, 1, 1);
--
-- Triggers `transfer`
--
DELIMITER $$
CREATE TRIGGER `t` AFTER INSERT ON `transfer` FOR EACH ROW update inventory t1
set t1.grade1 = t1.grade1 + 1
WHERE t1.owner = new.owner
AND `total` = '/1'
$$
DELIMITER ;
У меня есть две таблицы, как вы можете видеть из приведенного выше кода. Я нахожусь в процессе использования триггеров в MySQL.
То, что я пытаюсь сделать, это то, что, когда кто-то вводит что-то в передачу, и владелец сопоставляет владельца, который находится в инвентаре, - если то, что они ввели «(число) / 1» в общее количество в перевод, это добавило бы 1 к 1 классу. Если они набрали '(число) / 2' всего, это добавит 1 к 2-му классу. И то же самое для 3 класса. Как видно из приведенного выше триггера, это то, что я пробовал. Я пробовал без AND `total` = '/1'
, поэтому я знаю, что проблема должна быть в этой части. Я также пробовал без `приблизительно итогового значения, однако он не распознает этот столбец без него.
Я просмотрел SO и не могу найти ничего, чтобы решить эту проблему.
I нужен этот раздел через триггер - если у кого-то есть идеи, пожалуйста, дайте мне знать. Спасибо