データベース列の積分入力を特定の桁数に制限するにはどうすればよいですか? データベース列の制限
CREATE TABLE tab (id INT <1 digit> not null, value INT <10 digits> not null);
はあなたの短いバージョンは、より適切なデータ型になります
TINYINT UNSIGNED NOT NULL
を使用している
データベース列の積分入力を特定の桁数に制限するにはどうすればよいですか? データベース列の制限
CREATE TABLE tab (id INT <1 digit> not null, value INT <10 digits> not null);
はあなたの短いバージョンは、より適切なデータ型になります
TINYINT UNSIGNED NOT NULL
を使用している
SQL Serverの例を(、CHECK制約をサポートしていませんMySQLの)チェック制約(SQL Serverなど)やトリガーを追加します。
CREATE TABLE tab (
id tinynot null CHECK (id BETWEEN 0 AND 9),
value INT not null CHECK (id BETWEEN 1000000000 AND 9999999999)
);
その後、
編集を参照してください、あなたは、MySQL
にをありがとう、それが格納された値を制限することはできません。
長いバージョンの方が、MySQL integer data typesをお読みになることをお勧めします。 TINYINT
は、-128〜+ 127、または0〜+ 255の値を格納する1バイトの列であるため、目的には十分であることがわかります。
第2に、TINYINT(1)
と定義すると、表示幅が1桁のTINYINTとして定義されます。これにより、10を超える値が格納されることはありません。この動作の詳細については、numeric type attributesを参照してください。
ありがとう、あなたは私が何をしているのか知っていますか?私は本当に明日実際に自分のプロジェクトをやらなければならないでしょう、誰も私を "落として"いらない...ありがとう。 :-D – user1155788
ところで、私はユーザーVARCHAR(1)と思う。もう何も読む必要はないので、より良いことです。 - :D – user1155788
文字列の長さを知るためにVARCHARが1バイト(短い長さ)を必要とするため、CHAR(1)が1バイトを使用する場合、VARCHAR(1)は2バイトのデータを使用します(VARCHAR =文字列+長さ@文字列の長さが255文字以下の場合は1バイト、文字列は文字列に関係なく1文字あたり1バイトです)したがって、すべてのセルに1バイトの文字列、つまり1文字があれば、CHAR 1) –
'mysql'または' sql'をトリガーする必要があるだろう? – diEcho
ああ、申し訳ありません、そのmysql – user1155788