我有 3 张桌子:
模块:
id_module | name
--------------------
1 users
2 roles
...
轮廓:
id_profile | name
--------------------
1 admin
2 promoter
和许可
id | id_profile | id_module | read | write | modify | delete
---------------------------------------------------------------
我想要的是一个触发器,每次我插入一个新模块时都填充表权限......但对于每个现有的配置文件。
因此:
INSERT INTO `module` (`name`) VALUES
('user'),
('roles');
现有的配置文件管理员和发起人权限表将以这种方式填充:
id | id_profile | id_module | read | write | modify | delete
---------------------------------------------------------------
1 1 1 0 0 0 0
2 1 2 0 0 0 0
3 2 1 0 0 0 0
4 2 2 0 0 0 0
为此,我创建了以下触发器:
CREATE TRIGGER `create_permission` AFTER INSERT ON `module`
FOR EACH ROW
BEGIN
DECLARE `my_profile` INT(11) ;
SELECT id_profile INTO `my_profile` FROM profile WHERE state <>3;
INSERT INTO `permission` (`id_profile`, `id_module`, `read`, `write`, `modify`, `delete`) VALUES(`my_profile`, NEW.`id_module `,0,0,0,0);
END;
当有配置文件时效果很好......当我返回“结果包含多行”时有多个
我读到当你声明一个支持单个值的变量时会出现这个问题......你可以为表配置文件的每个 id 插入记录吗?