我正在尝试将一条记录插入dim_channel表中,主键为零(unsigned int)。
mysql命令:

INSERT INTO dim_channel
set channel_id=0,name='Other',parent_channel_id=0,parent_channel_name='Other';

结果:
select * from dim_channel;
+------------+-------+-------------------+---------------------+
| channel_id | name  | parent_channel_id | parent_channel_name |
+------------+-------+-------------------+---------------------+
|          1 | Other |                 0 | Other               |
+------------+-------+-------------------+---------------------+

请注意,channel_id得到的值是1,而不是我预期的0。
任何人都知道这是为什么。
顺便说一下,我可以将记录更新为:
更新dim_channel set channel_id=0,其中channel_id=1;
只想知道为什么我不能在第一个位置插入频道为0的记录。
谢谢。
=mysql命令供您测试====
--创建表
CREATE TABLE `dim_channel` (
  `channel_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` char(80) DEFAULT NULL,
  `parent_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
  `parent_channel_name` varchar(80) DEFAULT NULL,
  PRIMARY KEY (`channel_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

--插入记录
INSERT INTO dim_channel set channel_id=0,name='Other',parent_channel_id=0,parent_channel_name='Other';

--查看结果
select * from dim_channel;

最佳答案

这是因为在该字段上有一个自动递增的主键。如果在插入时为该值指定NULL0,它将显式地给出表序列中的下一个数字。

关于mysql - mysql无法插入带有无符号主键的记录为零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16549566/

10-11 03:07
查看更多