2016-04-01 6 views
-1

を挿入するために、私は私が実行したいこの文があります。どのようにブール条件でMySQLに

INSERT INTO kitchenitems (kno, `date`, added_Date, added_By) 
VALUES (5,'2016-04-01', now(), 2); 

をしかし、それは私が「5」かどうかを持っている「自演」かどうかを確認したい実行される前に。そうでなければ実行する必要があります。もしそれが実行されるべきではありません。前もって感謝します。

+0

は '主キーをkno'はありますか?またはプライマリキーにしたいですか? – Sevle

+0

@SevleいいえPK –

+0

番号5が動的な場合は、プログラミング言語(SQLではなく)で作成する必要があります。あなたはその側のifステートメントの番号をチェックできませんか? –

答えて

1

あなたはこのような何か行うことができます:あなたはknoの一意の値が必要な場合は、

INSERT INTO kitchenitems (`kno`, `date`, `added_Date`,`added_By`) 
    SELECT kno,date,added_Date,added_By 
    FROM (SELECT '5' as kno, '2016-04-01' as date, NOW() as added_Date, '2' as added_By) a 
    WHERE NOT EXISTS (SELECT 1 FROM kitchenitems b WHERE a.kno = b.kno); 

しかしを、あなたのサーバー側ですべきensure that

+0

thanxメート。魅力的に働いた! –

0

こんにちは私はそれが簡単にストアドプロシージャで行うことができると思う...私はあなたがこの記事を読むことをお勧めしますHERE私はそれがあなたの解決策に対する答えだと思います。

ここ

はそれがあなたの問題にどのように動作するかを確認するためにSQL Fiddleです...ここ

は、ストアドプロシージャ

CREATE PROCEDURE addItem 
(IN inkno INT, IN inddate DATETIME, IN inadded_Date DATETIME, IN inadded_By INT) 
BEGIN 
    DECLARE SomeId int; 
    DECLARE CheckExists int; 
    SET CheckExists = 0; 

    SELECT count(*) INTO CheckExists from kitchenitems WHERE kno = inkno; 

    IF (CheckExists > 0) THEN 
     SELECT kno INTO SomeId FROM kitchenitems WHERE kno = inkno; 
    ELSE 
     INSERT INTO kitchenitems (kno,ddate,added_Date,added_By) 
     VALUES (inkno, inddate,inadded_Date, inadded_By); 
    END IF; 

END/