問題タブ [foreign-keys]
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.
c# - C# MySqlCommand 複数ドロップ外部キーの問題
誰かがこの問題で私を助けてくれることを願っています。
機能を強化してバグを修正する必要があるため、DB に「パッチ」を適用するための小さなアプリがあります。SQL ステートメントを含む単なるファイルであるパッチを読み取り、DB にクエリを実行して、適用されていないパッチを適用する内部ハウスキーピングを行います。とにかく、これは良いか悪いかにかかわらず、私たちが持っている解決策であり、かなりうまく機能しています...今まで.
多くのテーブルで既存の外部キー制約を削除し、現在の ON DELETE RESTRICT の代わりに ON DELETE CASCADE 句に置き換える必要があることがわかりました。これらの他のテーブルが参照するテーブルの PK を削除すると、他のすべてのテーブルがクリーンアップされるという考えです。
基本的に、パッチ ファイルには次のものが含まれます。
および関連する
C# 側では、この文字列 (パッチ ファイルにある SQL ステートメント) を次のように渡します。
次のエラー メッセージが表示されます。
'.\mydb\table2' から '.\mydb#sql2-6a8-3f' への名前変更エラー (errno: 152)
文字列にこれらの DROP FOREIGN KEY 行が 2 つある場合にのみ、これを取得します。
DROP 行にリストされているキーが列名ではなくキーであることを確認しました。他のすべては (少なくとも私には) 問題ないように見えます。
単一の MySqlCommand に複数の SQL ステートメントを含めましたが、問題はなかったので、少しイライラしています。
同じファイルを取得して、コマンド ラインから mysql.exe にパイプすることができ、正常に動作するため、ステートメントの処理方法が異なるようです。
誰かがこれについて何か考えを持っていますか?
ありがとう、マット
ado.net - ADO.NETエンティティモデルで外部キーを取得するにはどうすればよいですか?
3つのテーブル(およびエンティティモデル内の対応するエンティティ)がありますゲーム:Id-primaykey...その他の列
プレーヤー:ID-主キー...他の列
GamePlayer(プレーヤーは多くのゲームに参加できます)GameId->GamePlayerIdからの外部キー->Playerからの外部キー...他の列
私のコードでは、gameIdとplayerIdを他の方法で利用できます。これを使用して、プレーヤー(playerId)が特定のゲーム(gameId)に参加しているかどうかを知りたいです。だから私はこれをやっています:(エンティティは私のコンテキストオブジェクトです)
IQueryable query = entity.GamePlayer.where(gp =>((gp.Game.Id == gameId)&&(gp.Player.Id == playerId)))クエリが行を返す場合、プレーヤーが参加していることがわかりますそのゲームで。
エンティティ参照に関する複数のMSDNブログを読みましたが、混乱しています。MSDNは、最初にEntityReferenceオブジェクトのIsLoadedを確認する必要があり、ロードされていない場合はエンティティをロードする必要があり、それをクエリで使用することを推奨しているようです。
GamePlayerにはGamePlayer.GameReferenceとGamePlayer.PlayerReferenceがありますが、GamePlayerオブジェクトが手元にないため、参照がロードされているかどうかを確認できません。GamePlayerテーブルは、2つの1...*関係を保持します。GameIdとPlayerIdのみを使用してGamePlayerにクエリを実行する必要があります。私はここで何が間違っているのですか?
代わりに、Player(またはGame)オブジェクトを(IDを使用して)取得し、代わりにGamePlayerエンティティコレクションを確認する必要がありますか?SQLはとてもシンプルでした。これが非常に単純な場合、申し訳ありませんが、SQLクエリをエンティティクエリに変換するのに苦労しています。
django - Django フォーム - 逆外部キー結合からのデータのインプレース編集
Person テーブルと Phone テーブルがあります。Phone テーブルには、自動インクリメント ID である Person テーブルへの外部キーがあります。各人は任意の数の電話番号を持つことができます。新しい Person エントリを作成し、既存の Person エントリと一緒に編集しながら電話番号を入力する Django フォームを作成する方法はありますか?
mysql - NULLを許可するMySQL外部キー?
画像サイトをまとめています。基本的なスキーマは非常に単純な MySQL ですが、画像に関連付けられている可能性のある管理者フラグ (「不適切」、「著作権」など) を表現しようとすると、問題が発生します。私の現在の考えは次のとおりです。
(読みやすくするために省略しています。さまざまな外部キーとインデックスが順番に並んでいます、誓います)
tblImageFlags.flagTypeID
は、フラグ型のルックアップ テーブルで外部キー化されており、ご想像のとおり、 で外部キー化するtblImageFlags.resolutionTypeID
必要luResolutionTypes.resolutionTypeID
があります。当面の問題は、フラグが最初に発行されたときに、論理的な解決タイプがないことです (これは の適切な使用法であると宣言しますNULL
)。ただし、値が設定されている場合は、ルックアップ テーブルに対して外部キーにする必要があります。
この状況に対する MySQL 構文の回避策が見つかりません。それは存在しますか?最高の準優勝者は次のとおりです。
- 「モデレートされていない」解像度タイプを追加する
NULL
エントリを追加しますluResolutionTypes.resolutionTypeID
(これは列でも機能しAUTO_INCREMENT
ますか?)
洞察をありがとう!
PSボーナスは、データベースの場合、それが「インデックス」か「インデックス」かを教えてくれた人に指摘します。
フォローアップ: テーブル構造の構文エラーであることが判明したことを指摘してくれた Bill Karwin に感謝します (NOT NULL
許可したい場合は、列を に設定しないでくださいNULL
!)。そして、それらのボーナスポイントを与えるのに十分なカルマが得られたら、私はします:)
sql - SQLServer 2k5のリンクサーバーテーブルのビューに外部キーを設定できますか?
別のデータベースにリンクされたサーバーを備えたSQLServerがあります。そのリンクサーバーにビューを作成しました
以下にしたいのですが
しかし、それはエラーを生成します:「外部キー'fk1_baz_to_foo'はユーザーテーブルではないオブジェクト'dbo.vw_foo'を参照します。」
次を使用して外部キーをテーブルに直接配置しようとすると
次に、次のエラーが発生します。
オブジェクト名'LINKEDSERVER.RemoteDatabase.dbo.tbl_bar'に、最大数を超えるプレフィックスが含まれています。最大は2です。
同じ効果を得る方法はありますか?
sql - SQL Server 2000 - テーブルの外部キー関係を照会する
Query a Table's Foreign Key Relationship とほぼ同じですが、SQL Server 2000の場合です。
特定のテーブル 'foo' に対して、foo を指す外部キーを持つ一連のテーブルを生成するためのクエリが必要です。
sql-server - SQL Server のビューの列を参照する外部キーを持つことはできますか?
SQL Server 2008 で与えられた
列が にある値に制限されるTableZ(A_or_B_ID, Z_Data)
ように定義することは可能ですか? ビューに対する外部キーでこれを行うことはできますか?Z.A_or_B_ID
ViewC
sql-server-2005 - 複数の外部キーを新しいテーブルを指すように変更する
MS SQL Server 2005 で、置き換えたいテーブルがあります。他の多くのテーブルには、このテーブルへの外部キー参照があります。これらすべての参照を古いテーブルから新しいテーブルに単純にロールオーバーするために実行できるスクリプトはありますか?
それとも、これらの各外部キーを具体的に削除して、それぞれに新しいキーを作成する必要がありますか?
mysql - 更新、外部キー制約およびnull
C#でデータテンプレートを生成しています。この素晴らしいサイトの良い人々の助けを借りて、私はほとんどすべての問題を処理することができました。これが最後の問題になるはずです。これは私が取り組んでいるテンプレートなので、nullを含むテーブル内のすべてのフィールドが必要です。(object)this.fieldを追加することでnullを更新する方法を教えてもらいました?? DBNull.Valueですが、外部キーであるフィールドがあり、データベースを調べたときにnullと表示されていても、レコードをプルすると値は0になります。このフィールドを更新しようとすると、外部キーに違反していると表示されます。制約。この問題を回避するにはどうすればよいですか?nullソリューションは機能すると思いましたが、nullとして表示されず、0として表示されます。
ありがとう
java - JPA が「on delete set null」FK 制限を生成しない
関連する 2 つのクラスに JPA アノテーションが付けられています。アラームとステータス。1 つのアラームは 1 つのステータスを持つことができます。
必要なのは、1 つのステータスを削除し、削除されたそのステータスにあるアラームに null 値を「伝播」できるようにすることです。
つまり、外部キーを「on delete set null」として定義する必要があります。
例:
前:
After (id=2のステータスを削除)
Hibernate と PostgreSQL を使用して、ソース コードからデータベースを自動的に生成しています。可能なすべての CascadeType を試しましたが、成功しませんでした。
コードに何か問題がありますか? JPAでそれを行うことは可能ですか?