【问题标题】:SQL After insert trigger insert multiple rows into another tableSQL After insert触发器将多行插入另一个表
【发布时间】:2015-05-14 17:08:44
【问题描述】:

所以我有下表:

Table: competence
Columns:
id  int(11) AI PK
name    varchar(400)
organization_id int(11)
competence_type_id  int(11)
competence_category_id  int(11)

还有如下用户表:

    Table: user
Columns:
id  int(11) AI PK
username    varchar(100)
password    varchar(100)
is_active   int(11)
user_type_id    int(11)
token   varchar(445)
organization_id int(11)
title_id    int(11)
image_path  varchar(100)
division_id int(11)

这两个表之间的联系如下:

Table: user_has_competence
Columns:
user_id int(11) PK
competence_id   int(11) PK
competence_level_id int(11)
progression varchar(45)
id  int(11) AI PK

现在我试图在competence 表上创建一个触发器,它执行以下操作:

在将一行插入到权限表中后,找到具有相同组织 ID 的所有用户,然后为每个用户插入带有 user_id 和权限 ID 的 user_has_competence。

但是我并没有使用触发器这么多,并且希望你们中的一个人可以将我推向正确的方向。

【问题讨论】:

    标签: mysql sql-server triggers


    【解决方案1】:

    在mysql中可以这样做

    delimiter //
    create trigger competence_ins after insert on competence
    for each row 
    begin
     insert into user_has_competence (user_id,competence_id)
     select u.id,c.id from competence c
     join user u on u.organization_id = c.organization_id and c.organization_id = new.organization_id;
    end;//
    
    delimiter;
    

    【讨论】:

    • 非常感谢你,伙计! :D +1 你知道每当我创建一个用户时我会怎么做,它应该从权限表中添加组织 ID 相同的所有权限吗?
    • 是的,它几乎是一样的。如果你提供一个例子,我可以为此编写一个查询。
    • 实际上,当您添加用户时,您还添加了组织 ID,并且在权限表中您有组织 ID。因此,如果您插入到user_has_competence 中,可能会发生对于同一个组织 ID 有多个数据的情况,那么您是否希望每个数据以及新添加的 user_id 到 user_has_competence 中?
    • 我需要的基本上是:当一个新用户添加到数据库中时,它会自动将所有权限添加到权限_has_user,当添加一个新权限时,组织中的所有用户都必须获得权限
    • 好吧,这可能会有一些逻辑问题,因为当您添加任何用户时,您对competence 一无所知,您可以从具有相同组织ID 的权限中获取这些数据到@987654325 @ 现在说你添加了一个新的competence 并且使用相同的触发器你可能有重复的条目。所以我建议用一种方式。我建议创建一个新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-10-04
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 2023-02-01
    • 1970-01-01
    相关资源
    最近更新 更多