为了简单起见,我假设我有一个包含3列的表格; id
,parent_id
和name
。在此表中id
是我的自动递增主键。我想在此表中将多个名称组合在一起,为此,组中的所有名称将共享相同的parent_id
。如果我在组中插入第一个名称,我想要id
= parent_id
,如果我要插入另一个名称,我想指定一个特定的parent_id来将该名称放入特定的组中。如果我可以将该列的默认定义为与id相同,如果我在插入查询中指定parent_id
的值,那么我希望它能够使用那个价值。我知道您可以将默认值设置为特定的静态值,但是您可以指定默认值与该行的自动递增主键相同吗?也许这是触发器或存储过程的工作?
(我知道我可以获得最后一次插入生成的主键,然后更新表格,但这是2次,我宁愿不刻录。)
谢谢!
答案 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