我有一个数据库表:
CREATE CACHED TABLE LOGIN(ROWNO INTEGER GENERATED BY DEFAULT AS
IDENTITY(START WITH 1,INCREMENT BY 1),USERID VARBINARY(128) PRIMARY
KEY,LOGINA VARBINARY(128));
插入查询:
prepareStatement = conn.prepareStatement(" INSERT INTO LOGIN
(USERID,LOGINA) VALUES(?,?)”)
preparedStatement.setBytes(1,someBytes);
preparedStatement.setBytes(2,someOtherBytes);
preparedStatement.executeUpdate();
表格行插入 奇怪 :
RowNo UserID LoginA
1 3 data3 data3
2 2 data2 data2
3 1 data1 data1
当点击一个按钮时,插入一个新行。如你所见,RowNo 1应该在列表的顶部,而不是最后一个cuz,它是第一个插入的...每个新插入的行都位于顶部表...任何想法为什么以及如何解决?
答案 0 :(得分:0)
1- RowNo不是主键,UserID主键:你得到奇怪的表行。
2- RowNo不是主键,UserId唯一:你得到奇怪的表行。
3- RowNo主键,UserID唯一....这将为您提供正确的表,行号从1开始向下。而且由于Unique键列可以用作外键,所以所有的东西都很好:)
答案 1 :(得分:0)
在关系数据库中,如果不向SELECT语句添加ORDER BY子句,则不应期望以特定顺序返回行。您的结果在PK列上排序,因为在这种情况下,HSQLDB使用主键索引返回结果。当存在ORDER BY时,无论使用何种数据库软件或实际的SELECT语句,都可以保证行的排序。