所以我有一张表根据:
列出CREATE TABLE `dealerships` (
`dealership_id` BIGINT(20) UNSIGNED NOT NULL,
`zone` CHAR(200) NULL DEFAULT NULL,
`phone` BIGINT(20) UNSIGNED NOT NULL,
`fax` BIGINT(20) UNSIGNED NOT NULL,
`name` CHAR(200) NULL DEFAULT NULL,
`address1` CHAR(200) NULL DEFAULT NULL,
`address2` CHAR(200) NULL DEFAULT NULL',
`servicephone` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
`timezone` CHAR(20) NULL DEFAULT NULL,
PRIMARY KEY (`dealership_id`)
)
COMMENT='This stores dealership information. '
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
现在我插入
INSERT INTO dealerships (dealership_id, ~the rest~), VALUES( NULL, ~values);
这会返回dealership_id
不能为NULL
错误1048的错误。
INSERT INTO dealerships (dealership_id, ~the rest~), VALUES(0, ~values);
这将返回值dealership_id
已存在0
的错误。
INSERT INTO dealerships (dealership_id, ~the rest~), VALUES(default, ~values);
这将返回dealership_id
没有默认值错误1364的错误。
当我简单地说它,并省略brokerhip_id
INSERT INTO dealerships (~the rest~), VALUES(~values);
我收到错误,必须为dealership_id
指定一个值。
我每次与autoincrement primary keys
合作过。正常情况下,插入NULL
会对索引起作用,为我做一些自动神奇的事情。发生了什么事?
平台特定信息:
MariaDB10.1.18 x64
Windows Server 2012 R2
答案 0 :(得分:0)
对于创建添加AUTO_INCREMENT
CREATE TABLE `dealerships` (
`dealership_id` BIGINT(20) UNSIGNED NOT NULL AUTO_INCREMENT,
`zone` CHAR(200) NULL DEFAULT NULL,
`phone` BIGINT(20) UNSIGNED NOT NULL,
`fax` BIGINT(20) UNSIGNED NOT NULL,
`name` CHAR(200) NULL DEFAULT NULL,
`address1` CHAR(200) NULL DEFAULT NULL,
`address2` CHAR(200) NULL DEFAULT NULL',
`servicephone` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
`timezone` CHAR(20) NULL DEFAULT NULL,
PRIMARY KEY (`dealership_id`)
)
COMMENT='This stores dealership information. '
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
并且插入不要插入密钥(通过自动增量自动创建)
insert into `dealerships` (
`zone`,
`phone`,
`fax` ,
`name`,
`address1`,
`address2`',
`servicephone` ,
`timezone`
) values (
'vale_zone',
1,
2 ,
'val_name',
'val_address1',
'val_address2',
3 ,
'val_timezone'
)
答案 1 :(得分:0)
要插入具有自动增量属性的字段,请在create table中使用 ID int NOT NULL AUTO_INCREMENT 。
CREATE TABLE `dealerships` (
`dealership_id` INT NOT NULL AUTO_INCREMENT,
`zone` CHAR(200) NULL DEFAULT NULL,
`phone` BIGINT(20) UNSIGNED NOT NULL,
`fax` BIGINT(20) UNSIGNED NOT NULL,
`name` CHAR(200) NULL DEFAULT NULL,
`address1` CHAR(200) NULL DEFAULT NULL,
`address2` CHAR(200) NULL DEFAULT NULL',
`servicephone` BIGINT(20) UNSIGNED NULL DEFAULT NULL,
`timezone` CHAR(20) NULL DEFAULT NULL,
PRIMARY KEY (`dealership_id`)
)
COMMENT='This stores dealership information. '
COLLATE='utf8_general_ci'
ENGINE=InnoDB;
之后,您有两种插入数据的解决方案。
INSERT INTO dealerships(zone, phone, fax, name) VALUES('zone1', '00000', '00000', 'name1')
在这种情况下,我只是在几列中添加数据(在wame方式中添加其他列)。
INSERT INTO dealerships SET zone = 'zone1', phone = '0000', name = 'Eddy'
在这里,我使用了字段SET field = value, field2 = value2
。
如您所见,我没有添加对ID的任何引用。正常,该字段为AUTO_INCREMENT模式,而Mysql(或其他SGBD)将自动创建一个值。
当然,您可以强制使用值:
INSERT INTO dealerships SET dealership_id = 10, zone = 'zone1', phone = '0000', name = 'Eddy'
INSERT INTO dealerships(dealership_id, zone, phone, fax, name) VALUES(9, 'zone1', '00000', '00000', 'name1')
NOT NULL
default
。这是一个具有自己价值的常数(1364)。答案 2 :(得分:0)
乔治为你解释了这一切。如果要向表中添加自动增量,只需运行此sql语句
ALTER TABLE dealerships MODIFY COLUMN dealership_id BIGINT(20) UNSIGNED NOT NULL PRIMARY KEY AUTO_INCREMENT;
这将在经销商列号列上添加自动增量属性。如果您想更改自动增量开始值,请运行此项(将100更改为起始值)
ALTER TABLE dealerships AUTO_INCREMENT=100;