UPDATE表id及其约束MYSQL

时间:2014-08-06 19:14:09

标签: mysql sql sql-update constraints

我在mysql中有一个数据库,我有一个使用列名cedula VARCHAR(50)的主表,该列有字符,但我想用连续的数字更改它。我试过这个:

SET @a:=1;
UPDATE bdpiiad2.tpersona 
SET cedula=(CONVERT(@a:=@a+1, CHAR(50)))

但我有两个问题,第一个没有变化,第二个我不确定是否更改其他表中有参考的其他ID。

1 个答案:

答案 0 :(得分:1)

尝试使用此

SET @a:=1;
UPDATE bdpiiad2.tpersona 
SET cedula=(CAST(@a:=@a+1 as CHAR));

更新您创建此类程序所需的全部内容

DELIMITER $$

USE `bdpiiad2`$$

DROP PROCEDURE IF EXISTS bdpiiad2.`up`$$

CREATE PROCEDURE `up`()
BEGIN
DECLARE max_cnt INT;
DECLARE cnt INT;
SET cnt=1;
UPDATE bdpiiad2.tpersona SET cedula='0';
SELECT COUNT(*) INTO max_cnt FROM bdpiiad2.tpersona;

WHILE cnt<=max_cnt DO
  UPDATE bdpiiad2.tpersona 
    SET cedula=(CAST(cnt AS CHAR))
    WHERE cedula='0' LIMIT 1;
  SET cnt=cnt+1;
END WHILE; 
END$$

DELIMITER ;

然后像这样调用它

CALL bdpiiad2.up();