MYSQL数据库,B表按照A表某字段自动插入字段

刚才我发的那个贴,被莫名关闭了,没有任何违规,不知为何,在这里重发一次:

我有两张表
A表有字段 COLUMN1, A_COLUMN2, A_COLUMN3
B表有字段 COLUMN1, B_COLUMN2, B_COLUMN3
两表只有一个字段COLUMN1是相同的,其它不同。COLUMN1是个ID值,是唯一值,是自动递增的。
当我对A表插入或删除新记录,想让B表同时根据COLUMN1更改记录。
1. 如果是A表插入一行记录,B表同时插入相同的COLUMN1值,而B_COLUMN2, B_COLUMN3则为空,可供我手动更改。
2. 如果A表删除一行记录,则B表同时删除相同的COLUMN1值对应的此行记录
3. 如果A表更改A_COLUMN2, A_COLUMN3这些字段的值,则B表不受任何影响
4. 如果A表更改COLUMN1的值,则B表对应的相同COLUMN1也随之更改(这点无法做到就不要了)
5. 只有对A表做改动才会影响B表。至于对B表做任何改动,不会影响到A表。

由于SQL水平有限,还望详细指教,谢谢

COLUMN1是自动增长的话,如果不是编程控制的话,那它必须为主键。
2种情况有很大区别,我以自动增长+主键写下,请参考。

1.
CREATE TRIGGER trigger4InsertA
AFTER INSERT on A
FOR EACH ROW
BEGIN
INSERT INTO B VALUES(LAST_INSERT_ID(),'','');
END

2.如果你已经解决,over。追问

我在PHPMYADMIN运行了如上代码,可是提示以下错误:
check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 5

可否再帮看一下呢?

追答

我用Navicat试过了,可以啊。最好找个mysql帮助手册,自己研究研究哈。



脚本:

CREATE TABLE `a` (

  `COLUMN1` int(11) NOT NULL AUTO_INCREMENT,

  `A_1` text,

  `A_2` text,

  PRIMARY KEY (`COLUMN1`)

) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;


-- ----------------------------

-- Table structure for `b`

-- ----------------------------

DROP TABLE IF EXISTS `b`;

CREATE TABLE `b` (

  `COLUMN1` int(11) NOT NULL DEFAULT '0',

  `B_1` text,

  `B_2` text,

  PRIMARY KEY (`COLUMN1`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8;


DROP TRIGGER IF EXISTS `trigger4InsertA`;

DELIMITER ;;

CREATE TRIGGER `trigger4InsertA` AFTER INSERT ON `a` FOR EACH ROW BEGIN

    INSERT INTO B VALUES(LAST_INSERT_ID(),'','');

 END

;;

DELIMITER ;

温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-12-20
这些需求看起来通过在A表上建触发器可以解决的。
俺对MYSQL语法不熟,等大神来帮助你吧。