MySQL,两列都设置为主键

时间:2010-02-20 19:40:35

标签: mysql

为了简单起见,我假设我有一个包含3列的表格; idparent_idname。在此表中id是我的自动递增主键。我想在此表中将多个名称组合在一起,为此,组中的所有名称将共享相同的parent_id。如果我在组中插入第一个名称,我想要id = parent_id,如果我要插入另一个名称,我想指定一个特定的parent_id来将该名称放入特定的组中。如果我可以将该列的默认定义为与id相同,如果我在插入查询中指定parent_id的值,那么我希望它能够使用那个价值。我知道您可以将默认值设置为特定的静态值,但是您可以指定默认值与该行的自动递增主键相同吗?也许这是触发器或存储过程的工作?

(我知道我可以获得最后一次插入生成的主键,然后更新表格,但这是2次,我宁愿不刻录。)

谢谢!

1 个答案:

答案 0 :(得分:1)

这是触发器的工作!

CREATE TRIGGER NAME1 AFTER INSERT ON TABLE1 
BEGIN

UPDATE TABLE1 SET parent_id = id WHERE (parent_id IS NULL OR parent_id = '');

END;

INSERT INTO TABLE1 (id,parent_id) VALUES (null,null); -- parent_id will be equal to id
INSERT INTO TABLE1 (id,parent_id) VALUES (null,'1'); -- parent_id will be 1
INSERT INTO TABLE1 (id,parent_id) VALUES (null,'2'); -- parent_id will be 2