Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何在sqlite中设置带触发器的自动增量?_Android_Sqlite_Triggers - Fatal编程技术网

Android 如何在sqlite中设置带触发器的自动增量?

Android 如何在sqlite中设置带触发器的自动增量?,android,sqlite,triggers,Android,Sqlite,Triggers,伙计们,我只想问一下如何在我的数据库字段中创建触发器进行自动增量,这是我的: DBHelper.java public class DBHelper extends SQLiteOpenHelper { public static final String TABLE_NAME = "sma"; public static final String COLUMN_ID = "_id"; public static fina

伙计们,我只想问一下如何在我的数据库字段中创建触发器进行自动增量,这是我的:

DBHelper.java

public class DBHelper extends SQLiteOpenHelper
{
public static final String TABLE_NAME                   = "sma";
public static final String COLUMN_ID                    = "_id";
public static final String COLUMN_NAMA_SMA              ="nama_sma";
public static final String COLUMN_ALAMAT_SMA            ="alamat_sma";
public static final String COLUMN_LATITUDE_SMA          ="latitude_sma";
public static final String COLUMN_LONGITUDE_SMA         ="longitude_sma";
public static final String COLUMN_TELEPON_SMA           ="telepon_sma";
public static final String COLUMN_WEBSITE_SMA           ="website_sma";
public static final String COLUMN_EMAIL_SMA             ="email_sma";
public static final String COLUMN_TANGGAL_BERDIRI_SMA   ="tanggal_berdiri_sma";
public static final String COLUMN_DESKRIPSI_SMA         ="deskripsi_keunggulan_sma";
public static final String COLUMN_TANGGAL_AKREDITASI    = "tanggal_akreditasi";
public static final String COLUMN_FACEBOOK              ="facebook_sma";
public static final String COLUMN_TWITTER               ="twitter_sma";
//foreign key
public static final String COLUMN_FK_ID_BATASAN_USIA    ="id_batasan_usia";
public static final String COLUMN_FK_ID_AKREDITASI      ="id_akreditasi";
public static final String COLUMN_FK_ID_LOKASI          ="id_lokasi";
public static final String COLUMN_FK_ID_KURIKULUM       ="id_kurikulum";
public static final String COLUMN_FK_ID_BIAYA           ="id_biaya";


private static final String db_name ="schoolmap.db";
private static final int db_version=1;
private static final String db_create = "create table "
      + TABLE_NAME + "("
      + COLUMN_ID                   + " integer primary key autoincrement, "  
      + COLUMN_NAMA_SMA             + " varchar(20) not null, "  
      + COLUMN_ALAMAT_SMA           + " varchar(30) not null, "  
      + COLUMN_LATITUDE_SMA         + " varchar(10) not null, "  
      + COLUMN_LONGITUDE_SMA        + " varchar(10) not null, "  
      + COLUMN_TELEPON_SMA          + " varchar(15) null, "  
      + COLUMN_WEBSITE_SMA          + " varchar(20) null, "  
      + COLUMN_EMAIL_SMA            + " varchar(20) null, "  
      + COLUMN_TANGGAL_BERDIRI_SMA  + " datetime not null, "
      + COLUMN_DESKRIPSI_SMA        + " varchar(30) null, " 
      + COLUMN_TANGGAL_AKREDITASI   + " datetime not null, "
      + COLUMN_FACEBOOK             + " varchar(10) , " 
      + COLUMN_TWITTER              + " varchar(10), " 
      + COLUMN_FK_ID_BATASAN_USIA   + " integer DEFAULT 1, "
      + COLUMN_FK_ID_AKREDITASI     + " integer, "  
      + COLUMN_FK_ID_LOKASI         + " integer, "
      + COLUMN_FK_ID_KURIKULUM      + " integer, "
      + COLUMN_FK_ID_BIAYA          + " integer);"; 


 public DBHelper(Context context) {
    super(context, db_name, null, db_version);
    // Auto generated
   }
@Override
public void onCreate(SQLiteDatabase db) {

    db.execSQL(db_create);

     //This code isn't working, is the code wrong? 
     db.execSQL("CREATE TRIGGER pk AFTER INSERT ON sma " +
    "BEGIN " +
    "UPDATE sma SET id_batasan_usia = id_batasan_usia + 1 " +
    "END");
 }
}

触发器不工作,当我第一次运行列_FK_ID_LOKASI时,列_FK_ID_BIAYA默认设置为0,但在插入第二个数据后,它必须是1,对吗?我以前从未用过扳机,所以这次我真的需要帮助,有人能帮我吗?谢谢:D

要将某些列的值设置为大于表中任何其他值的值,请使用如下触发器:

CREATE TRIGGER autoinc_sma_lokasi
AFTER INSERT ON sma
WHEN NEW.lokasi IS NULL
BEGIN
    UPDATE sma
    SET lokasi = IFNULL((SELECT MAX(lokasi) FROM sma) + 1, 0)
    WHERE _id = NEW._id;
END;

列ID已在自动递增。你为什么认为你需要扳机?(您的触发器中有语法错误。)@CL:是的,但我需要自动递增列_FK_ID_LOKASI和列_FK_ID_BIAYA,只有使用触发器权限才能执行此操作?外键引用另一个表中的现有记录;发明一个新的值是没有意义的。@CL:好吧,现在我只是编辑我的代码,现在用触发器自动递增怎么样?这些列中的新值应该是什么?我可以问一下,new.lokasi==id\u lokasi,对吗?id=NEW.id是什么意思?不,必须使用表的主键来更新插入的同一行。