代码之家  ›  专栏  ›  技术社区  ›  rook

mysql,两列都设置为主键

  •  2
  • rook  · 技术社区  · 14 年前

    为了简单起见,假设我有一个3列的表; id ,请 parent_id name . 在这张桌子上 身份证件 是我的自动递增主键。我想将此表中的多个名称组合在一起,为此,一个组中的所有名称将共享相同的名称 亲本 . 如果我要在组中插入名字,我需要 身份证件 = 亲本 ,如果要插入另一个名称,我要指定一个特定的父对象ID,将该名称放入特定的组中。如果我能定义一个 违约 如果我指定一个值, 亲本 在插入查询中,我希望它使用该值。我知道可以将默认值设置为特定的静态值,但是可以将默认值指定为与该行的自动递增主键相同的值吗?也许这是触发器或存储过程的作业?

    (我知道我可以获取最后一次插入所生成的主键,然后更新表,但这是我不想烧掉的两个要求。)

    谢谢!

    1 回复  |  直到 14 年前
        1
  •  1
  •   Pentium10    14 年前

    这是一项触发性的工作!

    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