我有一个表 Student,其列名称为 Enroll no(auto_increment)、name、class、section、roll no(auto_increment)。现在我需要增加卷数,无论何时我更改类(class)或部分,无论注册否,任何列都不应从 1 开始。
最佳答案
一种解决方案是对列 roll_no 使用某种默认值(在本例中为 1),并更改表架构,以便列 roll_no 不会出现使用自动递增。然后,每当您 INSERT
一条新记录时,该记录的 roll_no 字段的值为 1。因此,roll_no 列将成为计算字段当您更新
类和节字段时。
来自 MySQL 5.1 手册的 CREATE
MySQL 5.1 Manual: CREATE
column_definition:
data_type [NOT NULL | NULL] [DEFAULT default_value]
[AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
[COMMENT 'string']
[COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
[STORAGE {DISK|MEMORY|DEFAULT}]
[reference_definition]
请注意,您可以为列指定 DEFAULT 值(请参见上面代码的第 2 行)。 这是一个不完美的模板,可以帮助您继续前进。再次强调,如果需要,请使用文档。
CREATE TABLE foo(
enroll_no int AUTO_INCREMENT PRIMARY KEY,
name (blah),
class (blah),
section (blah),
roll_no NOT NULL DEFAULT 1 COMMENT 'Must be calculated before UPDATEing class or section.')
ENGIN=InnoDB DEFAULT CHARSET =utf8;
设置此系统后,您可以使用 SELECT
查询记录的 roll_no 字段的当前值,然后使用 UPDATE
更新类或节字段。获得 roll_no 字段的当前值后,尝试向其添加 1 并将该结果用作 UPDATE
值。
我对 SQL 有点生疏,而且时间也不够,但我认为它会起作用。如果您遇到困难,请使用有关嵌套查询的良好引用。
关于java - mysql数据库中特定列增量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23954334/