mysql триггер - выставление цены против числа - PullRequest
0 голосов
/ 06 апреля 2020

У меня есть таблица с именем «Цены» и таблица с именем «Ranges_and_prices». В таблице «Ranges_and_prices» хранятся диапазоны с указанием цены (1-20, 10 фунтов стерлингов), когда кто-то входит в цены, когда он вводит total_quantity; ему нужно найти диапазон, в котором он находится, и затем поставить цену рядом с ним. Например, если кто-то введет «Кофе, 3», он увидит число три и установит диапазон от 1 до 20, и даст ему цену £ 10.

CREATE TABLE `prices` (
  `id` int(11) NOT NULL,
  `product` varchar(100) DEFAULT NULL,
  `total_quantity` int(11) DEFAULT NULL,
  `range` int(11) DEFAULT NULL,
  `price` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- --------------------------------------------------------

--
-- Table structure for table `range_and_prices`
--

CREATE TABLE `range_and_prices` (
  `id` int(11) NOT NULL,
  `ranges` varchar(100) DEFAULT NULL,
  `prices` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

--
-- Dumping data for table `range_and_prices`
--

INSERT INTO `range_and_prices` (`id`, `ranges`, `prices`) VALUES
(1, '1-20', 10),
(2, '21-40', 20);

Я все еще вроде новичок в этом, и я просто пытаюсь понять триггеры лучше. Я предполагал, что это будет после вставки, но я тогда не знаю, где go оттуда.

Любая помощь будет оценена:)

1 Ответ

0 голосов
/ 07 апреля 2020

Поскольку я вижу, что вы не получили свой ответ, и я собираюсь сделать почти тот же тип расчета для моего приложения, которое я строю, я дал ему go на вашем примере.

Перво-наперво: вы не можете запустить триггер, чтобы выполнить действие на том же столе, с которого был запущен триггер. Значение: когда вы вставляете новый продукт, вы не можете сразу запустить триггер для обновления этого же продукта.

Вы должны перегруппировать свои таблицы, и я предлагаю добавить новый. В новом у вас будет ИНОСТРАННЫЙ КЛЮЧ , который будет указывать на идентификатор вашего продукта, чтобы вы могли позже ПРИСОЕДИНИТЬСЯ к этим двум таблицам и получить результат. Здесь вы будете хранить желаемый диапазон цен + идентификатор продукта.

Я также внес несколько необходимых изменений в вашу таблицу, я не собираюсь называть их все в порядке, я собираюсь объяснить все, что происходит в триггере, , поскольку это было немного запутанным в то время даже для меня . Не стесняйтесь изучать код и задать вопрос.

Я сделал рабочий пример для вас, как я думаю, что это должно быть сделано, и это результат:

Схема (MySQL v5.7)

**Query #1**

    SELECT * FROM `range_and_prices`;

| id  | ranges_from | ranges_to | prices |
| --- | ----------- | --------- | ------ |
| 1   | 1           | 20        | 10     |
| 2   | 21          | 40        | 20     |
| 3   | 41          | 60        | 40     |

---
**Query #2**

    SELECT * FROM `product`;

| product_id | product | total_quantity |
| ---------- | ------- | -------------- |
| 1          | Coffee  | 5              |
| 2          | sugar   | 25             |

---
**Query #3**

    SELECT * FROM `product` INNER JOIN `range` ON product.product_id=range.product_id;

| product_id | product | total_quantity | product_id | range_prices |
| ---------- | ------- | -------------- | ---------- | ------------ |
| 1          | Coffee  | 5              | 1          | 10           |
| 2          | sugar   | 25             | 2          | 20           |

---

Здесь вы можете просмотреть полный рабочий код триггера и проверить его, изменив последнюю строку вставки: Просмотр на скрипте БД

Надеюсь, это станет для вас какой-то начальной помощью. Приветствия.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...