問題タブ [constraints]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
7 に答える
30389 参照

mysql - MySQL用語「制約」と「外部キー」の違い?

ここでMySQLのドキュメントを見て、FOREIGN KEYとCONSTRAINTの違いを整理しようとしています。FKは制約だと思っていましたが、ドキュメントはそれらが別のものであるかのように話しているようです。

FK を作成するための構文は (一部)...

したがって、「CONSTRAINT」句はオプションです。なぜ入れたり入れなかったりするのですか?省略した場合、MySQL は外部キーを作成しますが、制約は作成しませんか? それとも、「CONSTRAINT」は FK の名前にすぎないので、指定しないと匿名の FK になるのでしょうか。

明確化をいただければ幸いです。

ありがとう、

イーサン

0 投票する
2 に答える
2499 参照

mysql - MySQL-2つのインデックスを作成します。1つだけがSHOWCREATETABLE出力に表示されます

多対多のリンクテーブルがあり、その上に2つの外部キーを設定しようとしています。私はこれらの2つのステートメントを実行します:

実行すると、次のように表示されるSHOW CREATE TABLE address_list_membershipsと思います。

しかし、代わりに私はこれを取得します:

インデックスが1つしかないように見えます。外部キーを作成するたびにMySQLが参照列にインデックスを自動的に作成するというMySQLのドキュメントと矛盾しているようです。

CocoaMySQLやSQLyogなどのGUIツールを使用するか、コマンドラインで実行するかにかかわらず、テーブルに2つのFKを作成するたびに、この1つのインデックスのみに気づきました。

この謎の照明は非常にありがたいです。

0 投票する
7 に答える
26859 参照

database - Informixの名前から制約の詳細を取得するにはどうすればよいですか?

大規模なトランザクション(多くの挿入、削除、更新)をプログラミングし、それによってInformix(v10、ただし他のバージョンにも適用する必要があります)の制約に違反すると、たとえば、制約r190_710に違反したというあまり役に立たないメッセージが表示されます。名前しかわからない特定の制約の対象となるテーブルとキーを確認するにはどうすればよいですか?

0 投票する
5 に答える
4788 参照

sql-server - SQL Server トランザクション レプリケーション、およびさまざまな主キー

SQL Server 2005 とトランザクション レプリケーションを使用している場合、サブスクライバーの主キーの制約を削除し、パブリッシャーの主キーの制約を残すことはできますか?

プライマリ 既存のクラスター化された制約とは異なる列でクラスター化したいので、これを行いたいです。最初に制約を削除せずに、制約をクラスター化から非クラスター化に変換できるとは思いません。レプリケーションは既に行われています。

0 投票する
3 に答える
5286 参照

mysql - MySQL の 2 列の主キー

私は非常に単純な問題とうまくいく解決策を持っていますが、もっと単純なものを探しています。

複数の値が既存の値と等しい場合に、行がデータベースに追加されないようにしたいと考えています。たとえば、a2=a1 AND b2=b1 の場合、データは拒否されます。a2=a1 のみ、または b2=b1 のみの場合は許可されます。基本的に、両方の値が一致する必要がある主キーのように機能させたいと考えています。

データベースに書き込む前に、検証を通じてこれを実行できることを知っています--ex。* where a='a2' and b='b2' を選択し、結果が得られたときに新しいデータを書き込まないようにします。私がむしろしたいのは、このようなデータを自動的にブロックする、主キーなどの MySQL 設定を有効にすることです。

私は基本的な機能以外の MySQL にあまり詳しくないので、これが簡単である場合は申し訳ありません。一意のインデックスと主キーに関するあらゆる種類のグーグル検索は役に立ちませんでした。

0 投票する
5 に答える
5722 参照

sql - SQL Server で削除する前に制約を確認できますか?

次のような状況があります。外部キーでリンクされたメイン テーブルと他の多くのテーブル。ここで、メイン テーブルの行を削除しようとすると、ConstraintsViolation が発生しますが、これは意図的で適切です。

ここで、行削除イベントをトリガーする前に ConstraintsViolation が発生するかどうかを確認できるようにしたいと考えています。

これは可能ですか?

0 投票する
10 に答える
1049 参照

sql - 外部キーを使用してデータベースに新しいアイテムを追加する場合、SQLトリガーを使用して他のテーブルに関連する行を作成する必要がありますか?

SQL 2005を使用して、車両テーブル、車両エンジン、および車両ギアテーブルを含むデータベース設計を実装しています。

各テーブルにはSQLID番号であるIDがあり、各エンジンとギアには車両IDとの関係があります。したがって、車両を作成する前に、エンジンとギアを作成する必要があります。

エンジンとギアを作成するときに、どうすれば車両ID番号を知ることができますか?エンジンとギアテーブルの外部キー制約のため、車両列はまだ作成されていませんか?

車両の作成時に、車両にリンクされたエンジンとギアの空の行を作成する自動トリガーを実装する必要がありますか?しかし、もう一度、どうすれば車両IDを知ることができますか?

0 投票する
7 に答える
8460 参照

sql - 制約またはトリガーを使用して、特定のテーブルで行の削除を回避する方法はありますか?

制約を使用して特定のテーブルで行の削除を回避する方法はありますか?

ID が 0、1、または 2 の場合、(たとえば) 行の削除を拒否したい

これは、ユーザーがアプリケーションのマスター アカウントを削除するのを避けるためであり、SQL を直接使用して誰かが (誤って) 試みたとしても、それを避けたいと考えています。

ありがとう!

編集:

この質問の全体的な考え方は、アプリケーションに触れないことです。セキュリティの問題ではありません。制約またはSQL Serverが持つその他のことで要求したことを実行できるかどうかを知る必要があるだけです(標準のdbソリューションである必要はありません)。

編集2:

コードサンプルは非常に高く評価されています:D

0 投票する
15 に答える
6417 参照

php - データベース入力を常にPHPで制御する場合、NOTNULLやFOREIGNKEYなどの制約はどれほど重要ですか?

テーブルに外部キーの列を作成しようとしていますが、MySQLでは本来よりも難しいです。戻って、すでに使用されているテーブルに特定の変更を加える必要があります。では、MySQLが特定の値が適切であることを確認する必要があるのでしょうか。とにかくこのデータベースにアクセスするために使用しているPHPのような言語でそれを行うことはできませんか?

同様にNOTNULLを使用します。このデータベースにPHPでのみアクセスする場合、null値が入力されていないことをPHPに確認させることはできませんか?

PHPで実行できるのに、なぜMySQLを使用してこれらの制約を適用する必要があるのですか?


上記の理由から、NOTNULLは無視するのが非常に愚かな部分であることに気づきました。しかし、MySQLは、深刻な程度のモンキーなしでは外部キーを強制しません。

あなたの意見では、「偽の」外部キーを使用して、入力する値が他のテーブルでPHPと一致するかどうかを確認するだけでも悪いのでしょうか。

0 投票する
2 に答える
752 参照

oracle - ODBC 経由のアクセス - Oracle DEFAULT が機能しない

ODBC経由でOracleテーブルへのフロントエンドとしてMS Accessを使用していますが、うまく機能しています。しかし、Oracle テーブルで DEFAULT 制約を使用しようとしています。Access でリンクされたテーブルを開くと、既存のデータは問題なく表示されますが、行を追加しようとすると、Oracle DEFAULT を持つ列に値を入力せずに (デフォルトが使用されることを期待して) # と表示されます。各列で削除され、行はテーブルに追加されません。何か案は?それが助けになるなら、私はより多くの詳細を提供することができます.