mysql - 范围约束数字 MySQL 列 : how?

标签 mysql

我可以在数字 MySQL 列 (InnoDB) 上定义一个约束,只允许特定范围内的值吗?

例如此表中的 wavelength 列:

CREATE TABLE spectrumdata
(
  valueid INT AUTO_INCREMENT,
  spectrumset INT NOT NULL,
  wavelength DOUBLE NULL,
  intensity DOUBLE NULL,
  error INT NOT NULL,
  status INT NOT NULL,
  PRIMARY KEY (valueid),
  INDEX spectrumset_idx (spectrumset),
  CONSTRAINT spectrumset_fk FOREIGN KEY (spectrumset)
    REFERENCES spectrumsets (setid)
)
COLLATE=utf8_general_ci
ENGINE=InnoDB
ROW_FORMAT=DEFAULT
AUTO_INCREMENT=1;

最佳答案

如果您使用 InnoDB 作为引擎,先生,您可以 check this出去。如您所见,您可以创建一个新表,其中包含您的限制值和对您的字段的引用(作为外键),然后通过引用完整性强制执行您的约束。

更新

试试这个:

   CREATE TABLE allowed_val(
      limiting_val DOUBLE NOT NULL,
      PRIMARY KEY (limiting_val )
    ) ENGINE = InnoDB;

INSERT INTO allowed_val( limiting_val) VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9),(10),..(1000);

ALTER TABLE spectrumdata
ADD FOREIGN KEY (wavelength) REFERENCES allowed_val(limiting_val);

但您还必须将 spectrumdata 波长更改为 NOT NULL 以 DEFAULT = 0;处理空值。

关于mysql - 范围约束数字 MySQL 列 : how?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15758076/

相关文章:

php - 无法使用 MysqlResultSet 类型的对象

mysql - 设置点列的默认值

c++ - 使用 MysqlConnector/C 还是 MysqlConnector/C++?

mysql - 如何在没有外键的情况下关联两个表?

mysql - 使用 MySQL View 检索运行总计

MySQL 子选择然后组不工作

python - SQLAlchemy 和连接,我们没有外键

php - 无法连接到mysql,已经尝试了很多东西

php - propel:数据库:创建用户 'user' @'localhost' 的访问被拒绝

mysql - 如何申请自助加入