1

x INTデータベース レベルの制限を作成して、既に存在する 0 より大きい値を持つ列を持つ行を作成できないようにすることはできますか?

CONSTRAINTこの目的のために使用する方法はありますか?

4

1 に答える 1

1

考えられる解決策は、次のことです。

CREATE TABLE test
(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    myfield INT,
    CONSTRAINT check_myfield UNIQUE ( myfield )
);

現在、列myfieldは NULL である可能性があります。したがって、次の操作を行うと、合計で 0 個のエラーが発生します。

INSERT INTO `test` VALUES ( '', '1' );
INSERT INTO `test` VALUES ( '', '0' );
INSERT INTO `test` VALUES ( '', '5' );
INSERT INTO `test` VALUES ( '', '7' );
etc, you get the point...

すべての行の列には一意の値myfieldがありますが、この特定の列の値NULLがほぼ正確に必要な行を作成する可能性はまだあります。0 を超えるすべての値が一意である必要がありました。これはすべて ですNULL。このソリューションの優れた点は、より「プロフェッショナル」に感じられ、不必要なロジックがないことです。

于 2012-06-07T11:26:56.217 に答える