2011-08-29 72 views
0

我创建一个触发器,但得到这个错误:问题创造触发

android.database.sqlite.SQLiteException: near "CREATE": syntax error: CREATE TRIGGER fk_item_place BEFORE INSERT ON CREATE TABLE Item_Place(PlaceIDfk INTEGER ,ItemID NTEGER , FOREIGN KEY (PlaceIDfk) REFERENCES Place_Table(Place_ID) ON DELETE CASCADE FOREIGN KEY (ItemID) REFERENCES ContentTable(ContentID)); FOR EACH ROW BEGIN SELECT CASE WHEN ((SELECT Place_ID FROM Place_Table WHERE Place_ID=new.PlaceIDfk) IS NULL) THEN RAISE (ABORT,'Foreign Key Violation') END ; END ;

我的代码是这样的:

db.execSQL("CREATE TRIGGER fk_item_place " + 
      " BEFORE INSERT "+ 
      " ON "+ Item_places + 
      " FOR EACH ROW BEGIN "+ 
      " SELECT CASE WHEN ((SELECT "+ PlaceID +" FROM "+ PlaceTable +" WHERE "+ PlaceID +"=new." + place_id + ") IS NULL)"+ 
      " THEN RAISE (ABORT,'Foreign Key Violation') END ;" + 
      " END ;"); 

我在做什么错?

回答

0

您不能有一个ON CREATE TABLE触发器。确保Item_places是表名,而不是DDL。

+0

谢谢so0000000000000多我错误的表名实际上是** Item_place **和即时通讯所以dum代码** ** Item_places ** –

+0

@kshf_x您能否将马特的回答标记为正确答案? – JJD