Java 在ANDROID SQLite中,是否可以在不将其设置为主键的情况下使用AUTOINCREMENT
在Android Sqlite中创建表时,我尝试过使用INTEGER AUTOINCREMENT。但它显示出错误。 但它在提供整数主键自动递增时工作良好 我的要求是,带有AUTOINCREMENT的列不应该是主键Java 在ANDROID SQLite中,是否可以在不将其设置为主键的情况下使用AUTOINCREMENT,java,sqlite,Java,Sqlite,在Android Sqlite中创建表时,我尝试过使用INTEGER AUTOINCREMENT。但它显示出错误。 但它在提供整数主键自动递增时工作良好 我的要求是,带有AUTOINCREMENT的列不应该是主键 db.execSQL("CREATE TABLE " + Table_KOT_ITEMS_TEMP + "(" + col_Item_Name + " varchar(40) NOT NULL," + col_Ref_No
db.execSQL("CREATE TABLE " + Table_KOT_ITEMS_TEMP + "(" + col_Item_Name
+ " varchar(40) NOT NULL," + col_Ref_No
+ " int(11) NOT NULL DEFAULT '0'," + col_Table_No
+ " varchar(6) NOT NULL DEFAULT '0'," + col_Kot_No
+ " int(11) NOT NULL DEFAULT '0'," + col_Main_Item_Code
+ " varchar(10) NOT NULL," + col_Item_Type
+ " varchar(10) NOT NULL," + col_Item_Amount
+ " decimal(10,2) DEFAULT '0.00'," + col_Item_Qty
+ " decimal(9,3) NOT NULL DEFAULT '0.000'," + col_No_Of_Persons
+ " varchar(6) NOT NULL," + col_Dum_Unique
+ " varchar(25) NOT NULL," + col_CheckBox
+ " char(5) NOT NULL," + col_Item_Auto_ID
+ " INTEGER PRIMARY KEY AUTOINCREMENT)");
在SQLite中,一种自动递增列。不是直接递增的。但是你可以创建一个触发器来实现这一点 -创建表 创建表testtbl id整数主键, 自动增量默认为空, 其他行文本-可能更多 ; -创建辅助表 创建表序列辅助程序 名称文本主键COLLATE NOCASE, seq整数默认值1 ; -填写起始号码 在序列中插入辅助值“testtbl”,1; -创建触发器 为每行开始在testtbl上插入后创建触发器autoincr\u testtbl 更新testtbl集 autoincr=从序列中选择seq\u helper,其中name='testtbl' 其中rowid=new.rowid; 更新序列_helper SET seq=seq+1,其中name='testtbl'; 终止
您可能可以通过检查autoincr列是否为空来改进这一点,但您应该了解基本的想法。是的,实现这一点非常困难,唯一的选择是将其作为整型主键自动递增…是的,您可以使用AUTOINCREMENT生成列,而列不必是主键。不,您不能。它显示错误它显示什么错误?android.database.sqlite.SQLiteException:近自动增量:语法错误:,编译时:创建表KOT_Items_Temp002Item_Name varchar40 NOT NULL,Ref_No int11 NOT NULL默认值'0',表_No varchar6 NOT NULL默认值'0',KOT_No int11 NOT NULL默认值'0',Main_Item_Code varchar10 NOT NULL,Item_Item_Type varchar10不为空,Item_Amount decimal10,2默认值为“0.00”,Item_数量decimal9,3不为空默认值为“0.000”,No_Of_Persons varchar6不为空,col_Dum_Unique varchar25不为空,复选框char5不为空,Item_Auto_ID整数自动递增请将错误消息直接放在问题正文中,它使以后的参考更容易。也许我应该采用表中的命名约定。@user2746120正如我在回答中所写的,这是可能的,但不是很好。这个答案恰恰相反。