Sou muito novo em gatilhos e tive problemas gerais. Eu gostaria de conseguir isso:
CREATE TABLE `searcharticles` (
`articleID` int(11) unsigned NOT NULL,
`ean` char(13) COLLATE utf8_unicode_ci DEFAULT NULL,
`manufacturerNumber` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
PRIMARY KEY (`articleID`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
CREATE TABLE `addresses` (
`articleID` int(11) unsigned NOT NULL,
`shop` enum('shop1','shop2') COLLATE utf8_unicode_ci NOT NULL,
`url` varchar(255) COLLATE utf8_unicode_ci NULL,
`status` tinyint(3) NOT NULL DEFAULT '0',
`createTime` datetime NOT NULL,
`updateTime` timestamp NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`articleID`,`shop`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
Quando uma nova linha é inserida em searcharticles , os endereços da tabela devem ser preenchidos, mas não apenas uma vez. Eu gostaria de fazer um registro para cada loja que está em enum shop
(sei que isso não é bem projetado). Estou preso nisso:
CREATE TRIGGER ins_addresses AFTER INSERT on searcharticles
FOR EACH ROW
BEGIN
INSERT INTO addresses(articleID, shop, createtime) VALUES(NEW.articleID, ?, CURRENT_TIMESTAMP);
END
Como eu poderia iterar pelos possíveis valores de enumeração para acionar um insert com 'shop1' e outro com 'shop2' sem escrever um possível nome de loja no insert?
Não é bonito, mas obtém os valores de enumeração possíveis de
INFORMATION_SCHEMA.COLUMNS
.Teste:
Na verdade, eu me odeio por responder isso! Altere o modelo de dados para usar uma tabela de pesquisa,
shops
.Vai quebrar horrivelmente se os nomes de enumeração da loja tiverem vírgulas ou aspas (provavelmente).