2016-09-22 4 views
0

だから私は、MySQLデータベースこのトリガーと作品SQLiteのトリガーインサートエラー

delimiter $$ 
create trigger update_memberID 
after update on memberdata 
for each row 
Begin 
if not (new.visits <=> old.visits) then 
    insert into membervisit (memberID) values (new.memberID); 
    end if; 
if not (new.memberID <=> old.memberID) then 
update membervisit set memberID = new.memberID where memberID =  old.memberID; 
    end if; 
end$$ 
delimiter ; 

は今、私はセットアップにSQLiteの上の同じデータベースをしようとし、すべてのものが、このトリガが働いているのですがあります。私はSQLiteのトリガーを持っているコードは、私は受信エラーが

Exception in thread "main" java.sql.SQLException: near "INSERT": syntax error 
    at org.sqlite.core.NativeDB.throwex(NativeDB.java:397) 
    at org.sqlite.core.NativeDB._exec(Native Method) 
    at org.sqlite.jdbc3.JDBC3Statement.executeUpdate(JDBC3Statement.java:116) 
    at SQLiteSetup.main(SQLiteSetup.java:62) 
C:\Users\Owner\AppData\Local\NetBeans\Cache\8.1\executor-snippets\run.xml:53: Java returned: 1 
BUILD FAILED (total time: 0 seconds) 

それが参照するインサートである

"CREATE TRIGGER IF NOT EXISTS `membership.update_memberID` " + 
" AFTER UPDATE " + 
" ON memberdata " + 
" FOR EACH ROW BEGIN " +  
" SELECT CASE WHEN (new.visits <= old.visits) THEN " + 
    " INSERT INTO 'membership.membervisit' ('memberID') values (new.memberID);" + 
      "END;\n" + 

" SELECT CASE WHEN (new.memberID <= old.memberID) THEN " + 
    "UPDATE `membership.membervisit` SET `memberID` = `new.memberID` WHERE `memberID` =`old.memberID`;" + 
      "END;" + 
"END;" 

あるに

" INSERT INTO 'membership.membervisit' ('memberID') values (new.memberID);" 

あるすべてのヘルプは おかげ

をいただければ幸いです

答えて

0

CASEは式です。あなたは文のためにそれを使うことはできません。

しかし、SQLiteでは、トリガーはWHEN clauseになる可能性があります。 (SQLiteでは、NULLセーフな比較はISです)

CREATE TRIGGER update_memberID_visits 
AFTER UPDATE OF visits ON memberdata 
FOR EACH ROW 
WHEN NEW.visits IS NOT OLD.visits 
BEGIN 
    INSERT INTO membervisit(memberID) 
    VALUES (NEW.memberID); 
END; 

CREATE TRIGGER update_memberID_memberID 
AFTER UPDATE OF memberID ON memberdata 
FOR EACH ROW 
WHEN NEW.memberID IS NOT OLD.memberID 
BEGIN 
    UPDATE membervisit 
    SET memberID = NEW.memberID 
    WHERE memberID = OLD.memberID; 
END; 
+0

お手数ですがお手数ですが、 SQLiteは私にとって新しい獣です。本当に感謝しています。 – user3288887