我无法从已作为整数进行CAST并由1

时间:2018-02-08 16:16:50

标签: mysql sql

我转换了一个char列数据类型的id。之后,我想将它加1(加1)。

你可以帮帮我吗?为什么我的查询不起作用?

查询:

INSERT INTO `countries` (`id`, `country_name`) VALUES ((SELECT MAX(CAST(`id` as INTEGER)) AS `max_id` FROM `countries`) + 1, 'India');

2 个答案:

答案 0 :(得分:2)

这不是你应该如何做标识符。

如果您想增加id值,则需要在创建表格时使用AUTO_INCREMENT功能。

你的方式很危险,总有可能同时运行两个交易选择相同的“下一个ID”。

只需创建一个带有标志的表:

CREATE TABLE countries (
     id MEDIUMINT NOT NULL AUTO_INCREMENT,
     name CHAR(30) NOT NULL,
     PRIMARY KEY (id)
);
INSERT INTO countries (`name`) VALUES ('India');

答案 1 :(得分:2)

以下操作:

INSERT INTO `countries` (`id`, `country_name`) 
SELECT MAX(CAST(`id` as INTEGER)) + 1, 'India'
FROM `countries`;

但我认为如果你只将id列设为AUTO_INCREMENT会更容易。