2

数値の 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;
4

1 に答える 1

1

InnoDB をエンジンとして使用している場合は、これを確認できます。ご覧のとおり、制限値とフィールドへの参照 (外部キーとして) を含む新しいテーブルを作成し、参照整合性を使用して制約を適用できます。

アップデート

これを試して:

   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 に変更する必要もあります。null 値を処理します。

于 2013-04-02T07:10:44.247 に答える