テーブル作成のための整合性制約チェックを書くのに苦労しています。以下は私のテーブル作成ステートメントです:
CREATE TABLE User (
UName VARCHAR(15) PRIMARY KEY,
FName VARCHAR(15),
LName VARCHAR(15)
);
私が探している整合性制約は、UName (ユーザー名) に名や姓を含めることはできないということです。
PL/SQLなしでこれを書くことはできますか?
どんな助けでも大歓迎です。
TABLE CHECK CONSTRAINT
はい、次のように (同じテーブル内の他の列を参照するため、UNAME 列に対してではなく)として定義する必要があります。
CREATE TABLE User
(
UNAME VARCHAR(100),
FNAME VARCHAR(100),
LNAME VARCHAR(100),
CONSTRAINT CHECK_USERS
CHECK(INSTR(UNAME, FNAME) = 0 AND INSTR(UNAME, LNAME) = 0)
)
SQL の信頼性を高めるために、大文字を使用することをお勧めします。ユーザーは確かにログインを姓/名のように見せようと努力していますが、姓/名の最初の文字を大文字にしてユーザー名を小文字にしたり、その逆の場合に遭遇しました。
使用を検討してください
CREATE TABLE User
(
UNAME VARCHAR(100),
FNAME VARCHAR(100),
LNAME VARCHAR(100),
CONSTRAINT CHECK_USERS
CHECK(INSTR(upper(UNAME), upper(FNAME)) = 0 AND INSTR(upper(UNAME), upper(LNAME)) = 0)
)