sql >> データベース >  >> RDS >> Oracle

Oracleのデフォルトの制約名は何ですか?

    問題:

    Oracleのテーブルの制約のデフォルト名を知りたい。

    例:

    データベースに、country およびstudent 、次の制約があります:PRIMARY KEY (テーブルの列ID country およびstudent )、FOREIGN KEY (列country_id テーブル内student )、DEFAULT (列name テーブル内student )、UNIQUE (列name テーブル内country および列personal_number テーブル内student )、およびCHECK (列age テーブル内student

    解決策:

    CREATE TABLE country (
    id int NOT NULL primary key,
    name varchar(100) UNIQUE
    );
    
    CREATE TABLE student (
    id int NOT NULL primary key,
    name varchar(100) DEFAULT 'UNKNOWN',
    personal_number varchar(100) UNIQUE,
    age int CHECK(age>15),
    country_id int,
    FOREIGN KEY(country_id) references country(id)
    );
    

    Oracleがデフォルトでこれらのテーブルの制約にどのように名前を付けるかを表示してみましょう。このクエリを使用してそれらを確認します:

    select CONSTRAINT_NAME, CONSTRAINT_TYPE, TABLE_NAME
    from USER_CONSTRAINTS
    where TABLE_NAME='STUDENT' OR TABLE_NAME='COUNTRY';
    

    結果は次のとおりです。

    CONSTRAINT_NAME CONSTRAINT_TYPE TABLE_NAME
    SYS_C007376 R 学生
    SYS_C007366 P
    SYS_C007374 P 学生
    SYS_C007367 U
    SYS_C007375 U 学生
    SYS_C007372 C 学生

    ディスカッション:

    テーブルを作成するときに、いくつかの列に制約を設定します。ただし、これらの制約の名前は指定していないため、デフォルトで名前が付けられています。制約のデフォルト名はどのように生成されますか?

    Oracleでは、デフォルトの制約名はユーザー名で始まり、その後に「_C」が続きます。 ’とシーケンス番号。制約のタイプは「C」です。 ’(check )、‘P 」(主キー)、「U 」(一意性制約)、および「R ' (外部キー)。デフォルトの制約名はすべて「SYS」として生成されます ’、‘ _ ’、および番号。上の表でデフォルトの名前を確認できます。たとえば、CHECK student テーブルの名前はSYS_C007372です。 。


    1. sp_reset_connectionは何をしますか?

    2. PGTuneの代替-ClusterControlPostgreSQL構成

    3. Partition ByまたはMaxの使用方法は?

    4. SQL Serverで、OracleのSELECT FOR UPDATE WAITと同様の方法で単一の行をロックするにはどうすればよいですか?