数据表如下:
任务模型表:
MonthMissionId PrjoectTypeId MonthMisionName
1 1 任务1
2 1 任务2
3 1 任务3
4 2 任务4
。
。
。
。一个月报表:
MonthReportId ProjectId
1 1
2 2月报明细表:
MonthReportdtId MonthReportId MonthMissionId PlanStart RealityStart
1 1 1 2010-01-02 2010-02-02
2 1 2 2010-03-09 2010-04-10
3 1 3 2010-05-10 2010-05-10其中明细表的记录根据模板来,比如项目ID对应的项目类型为1,则模板表里的所有ProjectType=1的记录全部添加到月报明细表中。因为月明细和月是关联的,所以我想在给月表添加记录的时候,自动给月明细添加相应的模板数据到月明细中请问这个可以用MYSQL的触发器做吗?怎么做?谢谢。
任务模型表:
MonthMissionId PrjoectTypeId MonthMisionName
1 1 任务1
2 1 任务2
3 1 任务3
4 2 任务4
。
。
。
。一个月报表:
MonthReportId ProjectId
1 1
2 2月报明细表:
MonthReportdtId MonthReportId MonthMissionId PlanStart RealityStart
1 1 1 2010-01-02 2010-02-02
2 1 2 2010-03-09 2010-04-10
3 1 3 2010-05-10 2010-05-10其中明细表的记录根据模板来,比如项目ID对应的项目类型为1,则模板表里的所有ProjectType=1的记录全部添加到月报明细表中。因为月明细和月是关联的,所以我想在给月表添加记录的时候,自动给月明细添加相应的模板数据到月明细中请问这个可以用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); -- 测试如下mysql> INSERT INTO test1 VALUES
-> (1), (3), (1), (7), (1), (8), (4), (4);
Query OK, 8 rows affected (0.01 sec)
Records: 8 Duplicates: 0 Warnings: 0As a result, the data in the four tables will be as follows: mysql> SELECT * FROM test1;
+------+
| a1 |
+------+
| 1 |
| 3 |
| 1 |
| 7 |
| 1 |
| 8 |
| 4 |
| 4 |
+------+
8 rows in set (0.00 sec)mysql> SELECT * FROM test2;
+------+
| a2 |
+------+
| 1 |
| 3 |
| 1 |
| 7 |
| 1 |
| 8 |
| 4 |
| 4 |
+------+
8 rows in set (0.00 sec)mysql> SELECT * FROM test3;
+----+
| a3 |
+----+
| 2 |
| 5 |
| 6 |
| 9 |
| 10 |
+----+
5 rows in set (0.00 sec)mysql> SELECT * FROM test4;
+----+------+
| a4 | b4 |
+----+------+
| 1 | 3 |
| 2 | 0 |
| 3 | 1 |
| 4 | 2 |
| 5 | 0 |
| 6 | 0 |
| 7 | 1 |
| 8 | 1 |
| 9 | 0 |
| 10 | 0 |
+----+------+
10 rows in set (0.00 sec)