1

次のクエリを使用して、「askexpert」テーブルの usertypeid 属性の値を変更しようとしている場合:

UPDATE aura_users_logins SET user_types_id="some value" WHERE user_profiles_id="some value";

エラーがスローされます:

foreign key constraint fails (`aura`.`askexpert`, CONSTRAINT 
fk_askexpert_aura_users_logins` FOREIGN KEY (`user_id `aura_users_logins_user_types_id`) 
REFERENCES `aura_users_logins` (`user_id`, `user_types_id`).

ただし、次のクエリを使用して Userid を変更できます。

UPDATE aura_users_logins SET user_profiles_id="some value" WHERE uuser_profiles_id="some value";
4

3 に答える 3

1

テーブル構造を確認するのは良いことですが、「askexpert」テーブルには「aura_users_logins」列への外部キーがあるようです ( user_id, user_types_id)

「user_types_id」列を更新すると、「askexpert」の行に有効な参照がなくなります。

値を更新する場合は、次のことを行う必要があります。

  • 外部キーを無効にする
  • 新しい値で「aura_users_logins」に新しい行を作成し、「askexpert」を更新します
于 2012-09-12T12:53:28.003 に答える
1

しかし、次のクエリを使用して Userid を変更できます

UPDATE aura_users_logins SET user_profiles_id

いいえ、あなたはしません。user_profiles_idコラム更新中です。

本当にしたいならやれよ

SET FOREIGN_KEY_CHECKS = 0

最初。後で1再度設定します。

于 2012-09-12T12:37:13.430 に答える
0

「aura_users_logins」には外部キー「user_types_id」があるため、これは他のテーブルの主キーを参照しています。したがって、クエリで更新する主キーとして、他のテーブルにキーが含まれていることを確認する必要があります。

UPDATE aura_users_logins SET user_types_id="some value" WHERE user_profiles_id="some value";

「何らかの値」は、主キーとして他のテーブルに存在する必要があります。

于 2012-09-12T12:49:13.767 に答える