有个users表,2个字段:id(自增),global_id
我想实现插入记录时,global_id的值是id值加1000,可是我事先不知道id将要是什么值。。
我这样写:INSERT INTO users (global_id) VALUES (id + 1000)
可是不行。。正确的应该怎么写呢。。

解决方案 »

  1.   

    如果是insert
    mysql_insert_id
    (PHP 3, PHP 4 )mysql_insert_id --  取得上一步 INSERT 操作产生的 ID 
    说明
    int mysql_insert_id ( [resource link_identifier])
    mysql_insert_id() 返回给定的 link_identifier 中上一步 INSERT 查询中产生的 AUTO_INCREMENT 的 ID 号。如果没有指定 link_identifier,则使用上一个打开的连接。 如果上一查询没有产生 AUTO_INCREMENT 的值,则 mysql_insert_id() 返回 0。如果需要保存该值以后使用,要确保在产生了值的查询之后立即调用 mysql_insert_id()。 注: MySQL 中的 SQL 函数 LAST_INSERT_ID() 总是保存着最新产生的 AUTO_INCREMENT 值,并且不会在查询语句之间被重置。 
      

  2.   

    另外参考这个:
    mysql_affected_rows
    (PHP 3, PHP 4 )mysql_affected_rows -- 取得前一次 MySQL 操作所影响的记录行数
    描述
    int mysql_affected_rows ( [resource link_identifier])
    mysql_affected_rows() 返回最近一次与 连接句柄 关联的 INSERT,UPDATE 或 DELETE 查询所影响的记录行数。如果连接句柄没有指定, 则默认使用最近一次由 mysql_connect() 函数打开的连接句柄。 注: 如果你使用事务处理(transactions),你需要在 INSERT,UPDATE 或 DELETE 查询后调用 mysql_affected_rows() 函数,而不是在 commit 命令之后。 如果最近一次操作是没有任何条件(WHERE)的 DELETE 查询, 在表中所有的记录都会被删除,但该函数返回值为 0。 注: 当使用 UPDATE 查询,MySQL 不会将原值和新值一样的列更新。 这样使得 mysql_affected_rows() 函数返回值不一定就是查询条件所符合的记录数。 只有真正被修改的记录数才会被返回。 mysql_affected_rows() 函数不适用于 SELECT 语句;只适用于能够修改记录的语句中。请使用 mysql_num_rows() 函数来获得 SELECT 所返回的记录行数。 如果最近一次查询失败的话,函数返回 -1。 
      

  3.   

    可是我想在一条SQL语句中使用,用mysql_insert_id不得需要两条吗。。
      

  4.   

    如果global_id统统是id+1000,好像global_id字段没必要
      

  5.   

    知道id,查詢語句select id,id+1000 as global_id
      

  6.   

    global_id默认是id+1000,用户可以以后自己修改global_id