0

こんにちは、問題があります。いくつかの属性を持つテーブルを作成したいのですが、そのうちのいくつかは NOT NULL として指定する必要があります..そしてここで問題が発生します。テーブルにデータを挿入すると、'' (空の単一文字列) を挿入するとテーブルにデータが入力されますが、これは望ましくありません...データの挿入を単一文字列の入力または何も入力しないように制限する方法..

ここに私のテーブルがあります

CREATE TABLE tbl_Film (

ID INT 未署名の主キー、

Naziv VARCHAR(50) NOT NULL,

Zanr VARCHAR(50) NOT NULL,

説明 VARCHAR(150) NULL,

Kolicina INT UNSIGNED NOT NULL

);

INSERT INTO tbl_Film VALUES (1,'','Animirani','Mala ribica',2)

これは空白のデータを Naziv に入力しますが、私はそれを望んでいません..それを制限する必要があります..

http://prntscr.com/21gfgd

4

2 に答える 2

0

SQL では、NULLと同じではありません''(ただし、OleDB AFAIR を介した MS SQL は''として格納する必要がありますNULL)。

NULL 値は、欠落している不明なデータを表します。

http://www.w3schools.com/sql/sql_null_values.aspを参照してください。

通常の SQL では、CHECK 制約を使用する必要があります。

CREATE TABLE tbl_Film (
ID INT UNSIGNED PRIMARY KEY,
Naziv VARCHAR(50) NOT NULL,
Zanr VARCHAR(50) NOT NULL,
Opis VARCHAR(150) NULL,
Kolicina INT UNSIGNED NOT NULL,
CHECK (Naziv <> '')
);

残念ながら、この CHECK 制約は MySQL では実装されていません。

CHECK 句は解析されますが、すべてのストレージ エンジンによって無視されます。http://dev.mysql.com/doc/refman/5.7/en/alter-table.htmlを参照してください。

したがって、DBレベルで私が見る唯一の解決策は、P/SQLトリガーを作成することです...

于 2014-11-12T09:08:29.197 に答える
0

これが SQL で可能かどうかはわかりませんが、アプリケーションの '' を String NULL に交換しないのはなぜですか?

于 2013-11-02T18:36:49.153 に答える