我运行以下MySQL代码来创建full_contact_social_networks表
CREATE TABLE `full_contact_social_networks` (
`id` bigint(20) UNSIGNED NOT NULL,
`base_id` bigint(20) UNSIGNED NOT NULL,
`name` varchar(24) COLLATE utf8_unicode_ci DEFAULT NULL,
`slug` varchar(64) COLLATE utf8_unicode_ci DEFAULT NULL,
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
ALTER TABLE `full_contact_social_networks`
ADD PRIMARY KEY (`id`),
ADD KEY `base_id` (`base_id`);
ALTER TABLE `full_contact_social_networks`
MODIFY `id` bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT;然后,我想要创建一个触发器,以将段塞列的值设置为sha256 of base_id+name。我使用的方法如下:
CREATE TRIGGER full_contact_social_networksUpd BEFORE UPDATE ON full_contact_social_networks
FOR EACH ROW SET `slug` = SHA2((CONCAT (`base_id`, `name`)), 256); 但是这给了我以下错误信息:
[errno] => 1193
[sqlstate] => HY000
[error] => Unknown system variable 'slug' 发布于 2016-08-17 07:26:48
在触发器正文中,旧的和新的关键字使您能够访问受触发器影响的行中的列。旧的和新的是触发器的MySQL扩展;它们不区分大小写。
参考文献:http://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html
所以你的扳机必须是:
CREATE TRIGGER full_contact_social_networksUpd BEFORE UPDATE ON full_contact_social_networks
FOR EACH ROW SET NEW.slug = SHA2((CONCAT (NEW.base_id, NEW.name)), 256);但是这只适用于更新,您可能也想要一个用于插入。在mysql中,不能有一个触发器显示需要两个触发器插入或更新
CREATE TRIGGER full_contact_social_networksIns BEFORE INSERT ...https://stackoverflow.com/questions/38988470
复制相似问题