user表id主键自增长  password表id主键不自增长 。
用户注册 同时把 自增长的user表id写到password表的id里怎么写呢。不能改表结构只能以存储过程写明白的告诉我一下谢谢

解决方案 »

  1.   

    使用触发器。你可以先参照着官方手册中的例子,依葫芦画瓢,自己先写一下,有什么地方通不过,可以贴出来一些看一下。MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
      

  2.   

    手册中的例子。
    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);
      

  3.   

    您可以先插入user表,然后调用last_insert_id就能够得到最新的auto_increment的值了    $updateSQL= "insert into user(...) values(...)";
    $mysqli->query($updateSQL);
    if($mysqli->affected_rows > 0) {
    // 读取最后插入的记录号
    $updateSQL = "select LAST_INSERT_ID()";
    if($result = $mysqli->query($updateSQL)){
    if($row = $result->fetch_array(MYSQLI_BOTH)) {
    $parentid = $row[0];
    // 这里在执行插入password表的sql语句
    $updateSQL= "insert into password(parentid,...) values($parentid,...)";
    $mysqli->query($updateSQL);
    }
    }
    }
      

  4.   

    触发器怎么做呢?觉得不行delimiter $$
    create procedure auto_add(in name varchar(100),in password varchar(100))
    begin
    declare num int;
    insert into users values(null,name);
    select id into num from users order by id desc limit 1;
    insert into password values(num,password);
    end$$
    delimiter
      

  5.   


    在 after insert 中即可
      

  6.   

    触发器的话,如果一个表的有多个字段的话,其余的非主键的字段不好处理啊,先对非主键字段插入空值,然后用update来更新吗?
      

  7.   


    user表id主键自增长  password表id主键不自增长 。
    用户注册 同时把 自增长的user表id写到password表的id里怎么写呢。
    在 user 表的 after insert 的触发器中 (after 中 auto-increment 的值已知), insert into password表 value ....不知道 daiyan_2008(Darwin)   的问题是什么?
      

  8.   

    比如要插入n条记录,是不一样的
    (new.id,md5("aaaaa"))
    (new.id.md5("bbbbb"))
    (new.id,md5("ccccc"))
    使用触发器就不是很方便了呀?怎么把这个值传给触发器呢?
    这时候
    只能先把password表的id插入,其余的字段设为null,然后用update来更新password表中的内容,所以感觉触发器不是很方便,请问ACMAIN_CHM,触发器的思路是这样的吗?我是一菜鸟新人……多指教