表中的行插入不应该如此

时间:2018-03-14 06:37:03

标签: database row sql-insert hsqldb

我有一个数据库表:

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,它是第一个插入的...每个新插入的行都位于顶部表...任何想法为什么以及如何解决?

2 个答案:

答案 0 :(得分:0)

好吧我找到了原因;基本上我希望UserID成为在其他表中用作外键的主键;这是选项:

1- RowNo不是主键,UserID主键:你得到奇怪的表行。

2- RowNo不是主键,UserId唯一:你得到奇怪的表行。

3- RowNo主键,UserID唯一....这将为您提供正确的表,行号从1开始向下。而且由于Unique键列可以用作外键,所以所有的东西都很好:)

答案 1 :(得分:0)

在关系数据库中,如果不向SELECT语句添加ORDER BY子句,则不应期望以特定顺序返回行。您的结果在PK列上排序,因为在这种情况下,HSQLDB使用主键索引返回结果。当存在ORDER BY时,无论使用何种数据库软件或实际的SELECT语句,都可以保证行的排序。