タグ付けされた質問 「foreign-keys」

外部キーは、リレーショナル(およびSQL)データベースのデータ整合性機能です。外部キーは、参照整合性制約の対象となるリレーショナルテーブル内の一連の属性です。参照整合性制約では、1つのテーブルAの外部キー属性の値が、指定されたいくつかのテーブルB(Aと同じテーブルになる場合があります)の対応する値と一致する必要があります。


12
外部キー制約テーブルを切り捨てる方法は?
なぜないTRUNCATEのmygroup仕事は?私が持っON DELETE CASCADE SETているのに: エラー1701(42000):外部キー制約(mytest。instance、CONSTRAINT instance_ibfk_1FOREIGN KEY(GroupID)REFERENCES mytest。mygroup(ID))で参照されているテーブルを切り捨てることはできません drop database mytest; create database mytest; use mytest; CREATE TABLE mygroup ( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY ) ENGINE=InnoDB; CREATE TABLE instance ( ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY, GroupID INT NOT NULL, DateTime DATETIME DEFAULT NULL, FOREIGN KEY …


28
FOREIGN KEY制約によって参照されているため、テーブルを切り捨てられませんか?
MSSQL2005を使用して、最初に子テーブル(FK関係の主キーを持つテーブル)を切り捨てた場合、外部キー制約でテーブルを切り捨てることができますか? 私はどちらかができることを知っています DELETEwhere句なしでRESEEDIDを使用してから、ID(または) FKを削除し、テーブルを切り捨てて、FKを再作成します。 親の前に子テーブルを切り捨てている限り、上記のいずれのオプションも実行しなくても大丈夫だと思いましたが、次のエラーが発生します。 FOREIGN KEY制約によって参照されているため、テーブル 'TableName'を切り捨てることはできません。

6
「ON UPDATE CASCADE」を使用する場合
私は「ON DELETE CASCADE」を定期的に使用していますが、「ON UPDATE CASCADE」を使用することはありません。 議論のために、いくつかのコードを見てみましょう。 CREATE TABLE parent ( id INT NOT NULL AUTO_INCREMENT, PRIMARY KEY (id) ); CREATE TABLE child ( id INT NOT NULL AUTO_INCREMENT, parent_id INT, INDEX par_ind (parent_id), FOREIGN KEY (parent_id) REFERENCES parent(id) ON DELETE CASCADE ); 「ON DELETE CASCADE」の場合、を持つ親idが削除されると、を持つ子のレコードはparent_id = parent.id自動的に削除されます。これは問題ありません。 これはid、親の更新時に「ON UPDATE CASCADE」が同じことを行うことを意味しますか? …



30
MySQLエラー1215:外部キー制約を追加できません
新しいスキーマをdbサーバーにフォワードエンジニアリングしようとしていますが、このエラーが発生する理由がわかりません。私はここで答えを検索しようとしましたが、見つかったすべてのことは、dbエンジンをInnodbに設定するか、外部キーとして使用しようとしているキーが独自のテーブルの主キーであることを確認するために言っています。私が間違っていなければ、私はこれらの両方のことをしました。皆さんが提供できる他の支援はありますか? Executing SQL script in server ERROR: Error 1215: Cannot add foreign key constraint -- ----------------------------------------------------- -- Table `Alternative_Pathways`.`Clients_has_Staff` -- ----------------------------------------------------- CREATE TABLE IF NOT EXISTS `Alternative_Pathways`.`Clients_has_Staff` ( `Clients_Case_Number` INT NOT NULL , `Staff_Emp_ID` INT NOT NULL , PRIMARY KEY (`Clients_Case_Number`, `Staff_Emp_ID`) , INDEX `fk_Clients_has_Staff_Staff1_idx` (`Staff_Emp_ID` ASC) , INDEX `fk_Clients_has_Staff_Clients_idx` …


13
既存のテーブルに外部キーを追加する
「katalog」というテーブルに外部キーを追加したい。 ALTER TABLE katalog ADD CONSTRAINT `fk_katalog_sprache` FOREIGN KEY (`Sprache`) REFERENCES `Sprache` (`ID`) ON DELETE SET NULL ON UPDATE SET NULL; これを実行しようとすると、次のエラーメッセージが表示されます。 Error Code: 1005. Can't create table 'mytable.#sql-7fb1_7d3a' (errno: 150) INNODBステータスのエラー: 120405 14:02:57テーブルmytable。#sql-7fb1_7d3aの外部キー制約のエラー: FOREIGN KEY (`Sprache`) REFERENCES `Sprache` (`ID`) ON DELETE SET NULL ON UPDATE SET NULL: Cannot resolve …

11
別のテーブルで一致するエントリがない行を選択するにはどうすればよいですか?
データベースアプリケーションのメンテナンス作業を行っていますが、1つのテーブルの値が外部キーのスタイルで使用されているにもかかわらず、テーブルに外部キーの制約がないことがわかりました。 これらの列にFK制約を追加しようとしていますが、単純に修正されている以前のエラーからのテーブル内の不良データがすでに大量にあるため、それが見つからない行を見つける必要があります。他のテーブルと一致させてから削除します。 Webでこの種のクエリの例をいくつか見つけましたが、それらはすべて、説明ではなく例を提供しているようであり、なぜ機能するのかわかりません。 誰かが私はむしろ、この内のすべてのテーブルのSOに動作してくるよりも、これらのクエリを自分で作ることができるように、それはやっている別のテーブルにいない試合で、すべての行を返すクエリ、および何を構築する方法を私に説明することができます混乱がありますFK制約はありませんか?
323 sql  foreign-keys 

22
MySQLは外部キー制約を追加できません
したがって、プロジェクトの要件としてデータベースに外部キー制約を追加しようとしていますが、最初または2回は異なるテーブルで機能しましたが、外部キー制約を追加しようとするとエラーが発生するテーブルが2つあります。表示されるエラーメッセージは次のとおりです。 エラー1215(HY000):外部キー制約を追加できません これは、テーブルの作成に使用しているSQLです。問題のある2つのテーブルはPatientおよびAppointmentです。 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0; SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=1; SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='TRADITIONAL,ALLOW_INVALID_DATES'; CREATE SCHEMA IF NOT EXISTS `doctorsoffice` DEFAULT CHARACTER SET utf8 ; USE `doctorsoffice` ; -- ----------------------------------------------------- -- Table `doctorsoffice`.`doctor` -- ----------------------------------------------------- DROP TABLE IF EXISTS `doctorsoffice`.`doctor` ; CREATE TABLE IF NOT EXISTS `doctorsoffice`.`doctor` ( `DoctorID` INT(11) NOT NULL …
314 mysql  sql  foreign-keys 

16
FOREIGN KEY制約を導入すると、サイクルまたは複数のカスケードパスが発生する可能性があります。なぜですか?
私はしばらくこれに取り組んできましたが、何が起こっているのかよくわかりません。サイド(通常は2)を含むカードエンティティがあり、カードとサイドの両方にステージがあります。EF Codefirst移行を使用していますが、このエラーで移行が失敗します。 テーブル 'Sides'にFOREIGN KEY制約 'FK_dbo.Sides_dbo.Cards_CardId'を導入すると、サイクルまたは複数のカスケードパスが発生する可能性があります。ON DELETE NO ACTIONまたはON UPDATE NO ACTIONを指定するか、他のFOREIGN KEY制約を変更します。 これが私のカードエンティティです: public class Card { public Card() { Sides = new Collection<Side>(); Stage = Stage.ONE; } [Key] [Required] public virtual int CardId { get; set; } [Required] public virtual Stage Stage { get; set; } [Required] [ForeignKey("CardId")] …

7
特定のtable.columnを参照し、それらの外部キーの値を持つ外部キーを持つすべてのテーブルを見つける方法は?
主キーが他のいくつかのテーブルで外部キーとして参照されているテーブルがあります。例えば: CREATE TABLE `X` ( `X_id` int NOT NULL auto_increment, `name` varchar(255) NOT NULL, PRIMARY KEY (`X_id`) ) CREATE TABLE `Y` ( `Y_id` int(11) NOT NULL auto_increment, `name` varchar(255) NOT NULL, `X_id` int DEFAULT NULL, PRIMARY KEY (`Y_id`), CONSTRAINT `Y_X` FOREIGN KEY (`X_id`) REFERENCES `X` (`X_id`) ) CREATE TABLE `Z` …

30
外部キーの何が問題になっていますか?
私は聞いた覚えジョエル・スポルスキの中で言及をポッドキャスト014(私は記憶が正しければ)彼はやっと今までに外部キーを使用したいということ。しかし、私にとっては、データベース全体で重複やそれに続くデータの整合性の問題を回避するために非常に重要なようです。 理由については、確かな理由がありますか(スタックオーバーフローの原則に沿った議論を避けるため)。 編集: 「外部キーを作成する理由がまだないので、実際に設定するのはこれが最初の理由かもしれません。」

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