Исходные данные:
CREATE TABLE ed_words (
id int NOT NULL AUTO_INCREMENT,
eng varchar(20),
rus varchar(20),
owner int,
PRIMARY KEY (id),
FOREIGN KEY (owner) REFERENCES ed_users(id)
);
Таблица содержит колонку со словом на английском и колонку со словом на русском. Например у нас есть такие данные:
INSERT INTO `ed_words` (eng,rus,owner) VALUES ('word1','перевод1',1),('word2','перевод2',1),('word3','перевод3',1);
Например я хочу добавить слово word1 но с другим переводом как-то так:
INSERT INTO `ed_words` (eng,rus,owner) VALUES ('word1','перевод4',1);
Вставлять нужно сразу по нескольку слов в запросе, от одного до inf, некоторые слова могут уже быть в БД, некоторых может не быть. Мне нужно, чтобы если слово уже существует перезаписался только перевод, т.е. чтобы не было дубликатов английских слов. Возможно ли это сделать как-то с помощью триггеров, либо как можно решить этот вопрос. Работаю на PHP, субд MySQL.
Вам нужна функция INSERT ... ON DUPLICATE KEY UPDATE
INSERT INTO ed_words (eng,rus,owner) VALUES ('word1','перевод1',1)
ON DUPLICATE KEY UPDATE rus='перевод1';
MULIPLES
INSERT INTO ed_words (eng,rus,owner)
VALUES
('word1','перевод1',1),
('word2','перевод2',1),
('word3','перевод3',1),
('word4','перевод4',1),
('word5','перевод5',1)
ON DUPLICATE KEY UPDATE
rus=VALUES(rus),
owner=VALUES(owner)
Сборка персонального компьютера от Artline: умный выбор для современных пользователей