字段ID:primary和auto_increment.need要填充?

时间:2012-02-10 22:49:07

标签: php mysql

如果我有这样的mysql表:

CREATE TABLE users(
    id int( 11 ) NOT NULL AUTO_INCREMENT ,
    name varchar( 80 ) NOT NULL ,
    surname varchar( 80 ) NOT NULL ,
    address varchar( 80 ) NOT NULL ,
    birth_place varchar( 50 ) NOT NULL ,
    province varchar( 5 ) NOT NULL ,
    birth_date date NOT NULL ,
    sex enum( 'male', 'female' ) NOT NULL DEFAULT 'male',
    treatment enum( 'politrauma', 'cardiologico', 'neurologico' ) NOT NULL DEFAULT 'politrauma',
  PRIMARY KEY ( id )
) ENGINE = MYISAM DEFAULT CHARSET = utf8

我执行查询以插入数据:

"INSERT INTO users (name, 
                    surname, 
                    address, 
                    birth_place,
                    province,
                    dt,
                    sex,
                    treatment) value (:name
                                      :surname,
                                      :address,
                                                        :birth_place,
                                                        :province,
                                                        :dt,
                                                        :sex,
                                                        :treatment)"

在mysql table中没有填充id。这可能导致错误?mysql会自动填充id的int值吗?

3 个答案:

答案 0 :(得分:1)

你想要的猜测:

ALTER TABLE `XXX` CHANGE `id` `id` INT( 11 ) NOT NULL AUTO_INCREMENT ;

答案 1 :(得分:0)

主键定义属性,使其对表中的元组(行)是唯一的。

必须选择主键(可以有多个主键),以便组合(在当前行上)它们在任何不同的行上永远不会相同。

auto_increment 定义将行插入表格时自动创建(增加)该列中的值。属性不必是使用auto_increment的主键。

因此,如果您希望值自动增加,则必须使用auto_increment,否则将其设置为null。

答案 2 :(得分:0)

您必须在AUTO_INCREMENT之后添加id int(11)属性,否则,这不会自动填充。