タグ付けされた質問 「constraint」

データベースにデータ整合性ルールを適用するチェックや外部キーなどの宣言的メカニズム。

6
一意のインデックスの代わりに一意の制約を使用する必要があるのはいつですか?
列に個別の値が必要な場合は、制約を使用できます create table t1( id int primary key, code varchar(10) unique NULL ); go または、一意のインデックスを使用できます create table t2( id int primary key, code varchar(10) NULL ); go create unique index I_t2 on t2(code); 一意の制約を持つ列は、一意のインデックスの適切な候補のようです。 一意の制約を使用し、代わりに一意のインデックスを使用しない既知の理由はありますか?

3
PostgreSQLの複数列の一意制約とNULL値
次のような表があります。 create table my_table ( id int8 not null, id_A int8 not null, id_B int8 not null, id_C int8 null, constraint pk_my_table primary key (id), constraint u_constrainte unique (id_A, id_B, id_C) ); そして、私(id_A, id_B, id_C)はどんな状況でも明確になりたいです。したがって、次の2つの挿入はエラーになる必要があります。 INSERT INTO my_table VALUES (1, 1, 2, NULL); INSERT INTO my_table VALUES (2, 1, 2, ...

3
3つの列のうち1つだけがNULLでないチェック制約
FLOAT、NVARCHAR(30)、またはDATETIME(3つの独立した列)の3種類の結果を含む(SQL Server)テーブルがあります。特定の行について、1つの列のみが結果を持ち、他の列がNULLであることを確認したい。これを達成するための最も単純なチェック制約は何ですか? このコンテキストは、非数値の結果を既存のシステムに取り込む機能を改良しようとしています。行ごとに複数の結果を防ぐために2つの新しい列を制約付きでテーブルに追加することが最も経済的なアプローチであり、必ずしも正しいものではありません。 更新:申し訳ありませんが、データ型はsnafuです。悲しいことに、示された結果の型をSQL Serverのデータ型として解釈するつもりはなく、単に一般的な用語が修正されました。

2
MySQL:テーブルに関連する外部キーを確認する方法
MySqlのテーブルに関連する外部キーを表示する方法は? 背景:外部キー制約を持つテーブルをMySqlにドロップしたかった。私がそれをするとき、私はこれを得る: Error Code: 1217. Cannot delete or update a parent row: a foreign key constraint fails 他のテーブルを残すテーブルに関連する外部キーを削除するにはどうすればよいですか。

2
PostgreSQL EXCLUDE USINGエラー:データ型整数にはデフォルトの演算子クラスがありません
PostgreSQL 9.2.3では、この単純化されたテーブルを作成しようとしています。 CREATE TABLE test ( user_id INTEGER, startend TSTZRANGE, EXCLUDE USING gist (user_id WITH =, startend WITH &&) ); しかし、私はこのエラーを受け取ります: ERROR: data type integer has no default operator class for access method "gist" HINT: You must specify an operator class for the index or define a default operator class ...


7
テーブルの完全な構造をコピーする
いくつかの方法を使用すると、テーブルのコピーを作成すると、インデックス、PK、FKなどが失われます。たとえば、SQL Serverでは次のように言えます。 select * into dbo.table2 from dbo.table1; これは、テーブルの単純なコピーです。すべてのインデックス/制約がありません。(バックアップを使用せずに)テーブル構造をコピーするにはどうすればよいですか? 私は主にこれを手動で行うことを探していますが、それが不可能な場合は、任意の解決策を受け入れます。




3
SQLで一度だけ書き込み、読み取り専用のデータベーステーブルを適用するにはどうすればよいですか?
それも可能ですか? 私のユースケースは元帳テーブルです。レコードが作成されたら、読み取り専用にする必要があります。つまり、誰もレコードを編集または削除できません。これは、元帳テーブルと、それと直接関係のあるテーブルにのみ適用されます。同じスキーマ内に、通常どおり更新/削除される他のテーブルがあります。 私の理解では、データの整合性のために、これらの種類の制約をデータベース層に適用する必要がありますが、これを行うためのクリーンで広く受け入れられている方法は見つかりませんアプリケーション層で? 理想は、変更される可能性があるため、使用されるDBプラットフォームにとらわれないように、プレーンSQLでそれを行う方法になりますが、私はそれが多すぎる場合、プラットフォームに依存するために、MySQLのフレーバーが推奨されます。 ありがとうございました!
28 mysql  constraint 

2
MySQLで「ibfk」は何を表していますか?
phpmyadminでテーブル 'photos'の外部キー制約を作成すると、後で制約の名前が 'photos_ibfk_1'になり、次の制約が 'photos_ibfk_2'などと呼ばれることがわかります。これから、[tablename] _ibfk_constraintIndexがMySQLのDB制約の規則。これは正しいです?IBFKは何の略ですか?

3
データベースで「少なくとも1つ」または「正確に1つ」を強制する制約
ユーザーがいて、各ユーザーが複数のメールアドレスを持つことができるとします CREATE TABLE emails ( user_id integer, email_address text, is_active boolean ) いくつかのサンプル行 user_id | email_address | is_active 1 | foo@bar.com | t 1 | baz@bar.com | f 1 | bar@foo.com | f 2 | ccc@ddd.com | t すべてのユーザーがアクティブなアドレスを1つだけ持つという制約を施行したい。Postgresでこれを行うにはどうすればよいですか?私はこれを行うことができました: CREATE UNIQUE INDEX "user_email" ON emails(user_id) WHERE is_active=true; これは、複数のアクティブなアドレスを持つユーザーを保護しますが、すべてのアドレスがfalseに設定されることは保護しません。 可能であれば、トリガーまたはpl / ...

4
チェック制約が機能しませんか?
次の表があります。 create table test ( id smallint unsigned AUTO_INCREMENT, age tinyint not null, primary key(id), check (age<20) ); 問題はCHECK、年齢の列で制約が機能しないことです。たとえば、年齢フィールドに222を挿入すると、MySQLはそれを受け入れます。
23 mysql  constraint 

4
エンティティ関係の問題
このように関連する4つのテーブルがあります(例です)。 Company: ID Name CNPJ Department: ID Name Code ID_Company Classification: ID Name Code ID_Company Workers: Id Name Code ID_Classification ID_Department classificationwith があるとしid = 20, id_company = 1ます。そして、departmentそれはid_company = 2(別の会社を表す)持っています。 これにより、分類と部門が別々に会社にリンクされるため、2つの会社の従業員を作成できます。そんなことはしたくないので、人間関係に問題があり、それを解決する方法がわかりません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.