0 レビュー
10 回答
php-重複を避けて同じテーブルに挿入します
Table enrollments
この統計の後:{ {-code-2}
、 {-code-3}
}
ユーザーが同じ{-code-4}
と{-code-5}
を挿入した場合、挿入を拒否する必要があります。
私はすでに試しました:
INSERT INTO enrollments({-code-4}、{-code-5})
VALUES('{$ {-code-4}}'、'{$ {-code-5}}')
どこ
NOT EXISTS(SELECT NULL FROM
どこで登録
{-code-4} ='{$ {-code-4}}' AND {-code-5} ='{$ {-code-5}}')
わからない
0
レビュー
答え :
わからない
0
レビュー
答え :
解決策:
classId
とuserId
を追加すると、一意として結合されるため、同じ classId
とuserId
は、以前にテーブルに存在していた場合は挿入できません。
ALTERTABLE登録
制約を追加UC_PersonUNIQUE(classId、userId);
わからない
0
レビュー
答え :
解決策:
以下のコードの代わりに
INSERT INTO enrollments(classId, userId)
VALUES('{$classId}', '{$userId}')
WHERE
NOT EXISTS(SELECT NULL FROM
enrollments WHERE
classId='{$classId}' AND userId='{$userId}')
置換
INSERT INTO enrollments(classId, userId)
SELECT '{$classId}', '{$userId}'
WHERE
NOT EXISTS(SELECT * FROM
enrollments WHERE
classId='{$classId}' AND userId='{$userId}')
例:デモデータを試すことができます
INSERT INTO enrollments(classId, userId)
SELECT 2, 2
WHERE
NOT EXISTS(SELECT * FROM
enrollments WHERE
classId=2 AND userId=2)
わからない
0
レビュー
答え :
解決策:
INSERTではなくINSERTIGNOREを使用します
INSERT IGNORE INTO person_tbl (classId, userId)
VALUES( '{$classId}', '{$userId}')
注:重複挿入の場合、このステートメントはエラーを生成しません。
わからない
0
レビュー
答え :
解決策:
idを削除し、classIdとuserIdをプライマリとして設定します。 次に、通常の挿入を実行します。存在する場合は、再度挿入されません。
わからない
0
レビュー
答え :
解決策:
重複を避けたい場合は、これらのfileds(classId、userId)UNIQUEキーを作成するか、これらのfiledをnullにしない場合は、これらのフィールドをPRIMIRYキーとして作成できます。
わからない
0
レビュー
答え :
解決策:
create table enrollments
(
classId int,
userId int
)
ALTER TABLE enrollments
ADD CONSTRAINT UC_Person UNIQUE (classId,userId);
INSERT INTO enrollments(classId, userId)
VALUES(1, 1);
insertステートメントに句を入力できない場合は、このコードを試してください。上記のテーブル構造では、重複エントリを挿入できません
。
わからない
同様の質問
私たちのウェブサイトで同様の質問で答えを見つけてください。