1

テーブル作成のための整合性制約チェックを書くのに苦労しています。以下は私のテーブル作成ステートメントです:

CREATE TABLE User (
UName VARCHAR(15) PRIMARY KEY,
FName VARCHAR(15),
LName VARCHAR(15)
);

私が探している整合性制約は、UName (ユーザー名) に名や姓を含めることはできないということです。

PL/SQLなしでこれを書くことはできますか?

どんな助けでも大歓迎です。

4

2 に答える 2

4

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)
)
于 2012-12-01T17:07:33.420 に答える
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)
)
于 2012-12-02T11:25:32.850 に答える