[OK]まず、私はmysqlの達人ではありません。第二に、私は検索しましたが、mysqlに関連するものは何も見ませんでした。私のDB知識は限られているので、2つの異なるデータベースタイプ間の構文上の違いを推測するだけではカードにはありません。ストアドプロシージャからストアドプロシージャを呼び出すまたはCOUNTを使用して
行を挿入する前に特定の値がすでにテーブルに存在するかどうかを確認しようとしています。私はこれについて、2つのストアドプロシージャを使用することにしました。最初:
CREATE PROCEDURE `nExists` (n VARCHAR(255)) BEGIN
SELECT COUNT(*) FROM (SELECT * FROM Users WHERE username=n) as T;
END
そして第二には:あなたが見ることができるよう
CREATE PROCEDURE `createUser` (n VARCHAR(255)) BEGIN
IF (nExists(n) = 0) THEN
INSERT INTO Users...
END IF;
END
だから、私はのcreateUserからnExistsを呼び出そうとしています。 nExistsという名前の関数が存在しないというエラーが表示されるのは、ストアドプロシージャだからです。私は違いが何であるか、あるいはそのような違いが必要な理由についてはっきりしていませんが、私はJava開発者です。多分、ここで巨大なDB関連の概念が欠けているかもしれません。
あなたは私を助けてくれますか? ありがとう
「なぜユーザーからのSELECT COUNT(*)ユーザー名= n?」だけでなく、「(*ユーザーからのSELECT *ユーザー名= n)」という理由がありますか? – zerkms
@zerkms err ... idk。私はあなたが何を得ているかを見ていると思う。私はそれを試みます。 –
@zerkmsうん、うまくいった!そのコメントを回答として設定し、私はあなたに幸福の大きな緑色のチェックマークを付けます:) –