一个多表插入语句的问题

wt3216767 2009-08-27 11:27:12
msg_info表里面有 id name type body time 字段
msg_read 表里有 msg_id(msg_info表的外键) uid(user表的外键) status(是否状态)
我想在插入 msg_info表 数据的时候 同时查出 type字段符合的用户 并且批量的插入到 msg_read 表中
请问有什么好办法么?
insert into msg_read(msg_id,uid,status) values (select id from msg_info where cretatetime='2009-06-17 12:00:27' as msgid,select id from sys_users where rightes='12','1')
这么写 也不好用啊 请大家帮帮忙啊!
...全文
134 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ACMAIN_CHM 2009-08-27
  • 打赏
  • 举报
回复
用触发器就可以了。

参考一下MYSQL帮助手册中的例子。

CREATE TABLE test1(a1 INT);
CREATE TABLE test2(a2 INT);
CREATE TABLE test3(a3 INT NOT NULL AUTO_INCREMENT PRIMARY KEY);
CREATE TABLE test4(
a4 INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
b4 INT DEFAULT 0
);

delimiter |

CREATE TRIGGER testref BEFORE INSERT ON test1
FOR EACH ROW BEGIN
INSERT INTO test2 SET a2 = NEW.a1;
DELETE FROM test3 WHERE a3 = NEW.a1;
UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
END;
|

delimiter ;

INSERT INTO test3 (a3) VALUES
(NULL), (NULL), (NULL), (NULL), (NULL),
(NULL), (NULL), (NULL), (NULL), (NULL);

INSERT INTO test4 (a4) VALUES
(0), (0), (0), (0), (0), (0), (0), (0), (0), (0);

nianzhang747 2009-08-27
  • 打赏
  • 举报
回复
简单trigger
create table tb1(
-> gid int auto_increment primary key,
-> color int,
-> size int
-> );
Query OK, 0 rows affected (0.16 sec)

mysql>
mysql> create table tb2(
-> id int auto_increment primary key,
-> gid int,
-> weight int
-> );
Query OK, 0 rows affected (0.05 sec)

mysql>
mysql> create table tb3(
-> id int auto_increment primary key,
-> gid int,
-> c3 int
-> );
Query OK, 0 rows affected (0.08 sec)

mysql> delimiter |
mysql>
mysql> CREATE TRIGGER t_tb1_ai AFTER INSERT ON tb1
-> FOR EACH ROW BEGIN
-> insert into tb2(gid) values (new.gid);
-> insert into tb3(gid) values (new.gid);
-> END;
-> |
Query OK, 0 rows affected (0.11 sec)

mysql>
mysql> delimiter ;
mysql>
mysql> insert into tb1 (color) values (123);
Query OK, 1 row affected (0.27 sec)

mysql> select * from tb1;
+-----+-------+------+
| gid | color | size |
+-----+-------+------+
| 1 | 123 | NULL |
+-----+-------+------+
1 row in set (0.00 sec)

mysql> select * from tb2;
+----+------+--------+
| id | gid | weight |
+----+------+--------+
| 1 | 1 | NULL |
+----+------+--------+
1 row in set (0.00 sec)

mysql> select * from tb3;
+----+------+------+
| id | gid | c3 |
+----+------+------+
| 1 | 1 | NULL |
+----+------+------+
1 row in set (0.00 sec)
wt3216767 2009-08-27
  • 打赏
  • 举报
回复
是触发器。。。。丢人了
wt3216767 2009-08-27
  • 打赏
  • 举报
回复
对哈触发器 我去查查资料 4楼的TRIGGER我也去看看 谢谢
wwwwb 2009-08-27
  • 打赏
  • 举报
回复
贴记录及要求结果出来看看,考虑用TRIGGER解决
wt3216767 2009-08-27
  • 打赏
  • 举报
回复
info表里的 type字段 应该是user表里 rightes字段中的一个 应该是用in 查询的吧
恩 具体数字是 type 应该 是 1 rightes应该是 1,2,3
vinsonshen 2009-08-27
  • 打赏
  • 举报
回复
我想在插入 msg_info表 数据的时候 同时查出 type字段符合的用户 并且批量的插入到 msg_read 表中
请问有什么好办法么?

---------------------------
你这个也可以考虑用触发器来处理
vinsonshen 2009-08-27
  • 打赏
  • 举报
回复
你的msg_info表与user表有什么关联的吗?
wfnychuan 2009-08-27
  • 打赏
  • 举报
回复
触发器。。
建议先自己尝试着写。
再跟别人比较一下。再选择好的方法。这样比较能够进步。

56,940

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧