PRIMARY KEY ПО 2 полям

108
17 декабря 2021, 06:00

Есть таблица с столбцами: product_id, date, price

Как сделать проверку на уникальность по полям date, price ? Что бы при вставке не повторялась запись

  • если 05.12.2019 и 100 уже существует- не вставлять запись.

  • если 05.12.2019 и 101 не существует- вставлять запись.

Спасибо.

Answer 1
ALTER TABLE `table` ADD UNIQUE `unique_index`(`date`, `price`);
Answer 2

Возможно я поставил не правильно вопрос, но нашел идеальное решение в виде

INSERT INTO price_history (product_id, date, price) 
SELECT * FROM (SELECT 'product_id', 'date', 'price') AS tmp 
WHERE NOT EXISTS (SELECT price_history WHERE product_id = '1' AND date = '2019-12-05' AND price = '415') 
LIMIT 1;

Таким образом если планировщик будет обновлять сегодня базу и повторится значение, он пропустит и не будет дублировать значение. Спасибо всем.

Answer 3

Например вот так

DROP TRIGGER IF EXISTS check_info;
DELIMITER $$
CREATE TRIGGER check_info BEFORE INSERT myTable FOR EACH ROW
BEGIN
IF NOT EXISTS (SELECT 1 FROM myTable WHERE date = NEW.date and price=NEW.price) THEN
    INSERT INTO myTable (date,price)
    VALUES (NEW.myTable.date,NEW.myTable.price);
END IF;
END $$
DELIMITER ;
READ ALSO
javascript основы

javascript основы

В React JS, если правильно помню, был "prop" для не повторения таких блоков с одинаковой структурой, но с разными текстами

167
Нестандартная навигация слайдера

Нестандартная навигация слайдера

Есть много слайдеров как ниже

157