这是可行的吗?原因是我使用了一个像队列一样的表格,依次弹出TOP(1)元素进行处理。我想插入一些行来立即处理。顺便说一句,谢谢。SQL Server CE:将行插入表顶部
1
A
回答
4
您需要一个列来维护订单,身份或时间戳。然后你可以通过“x desc”选择“top(1)order”来获得最近的。
0
1)如果你使用表格作为队列,你使用的工具是错误的工具。表格是固有的无序数据集。这是因为
2)行可以根据其任何字段的值进行排序。这意味着您可以通过向该行添加一个值(通常是ID)并在表格中的其他行之前添加一个值来“插入”中间的内容。
为什么使用数据库表来做到这一点?你显然正在寻找一个优先队列。如果您这样做是因为您希望在软件失败时正在处理的作业持续存在,请考虑将所有项及其优先级添加到表中,然后将其取出并插入到适当的优先级队列中软件,将您的数据存储从您的调度机制中分离出来。
+0
我知道表是什么,但有时也有这份工作没有合适的工具。我需要一个持久的事务存储和msmq或类似的东西,这是不可能安装的。由于只有一个应用程序访问商店,SqlServer CE似乎是最好的选择,它的表现相当好。 – Pablote 2009-02-16 13:05:01
3
你的数据库(连同您的身份)创建一个优先级列,然后排序就可以了:
CREATE TABLE myqueue(priority INT NOT NULL, id INT IDENTITY NOT NULL PRIMARY KEY, payload VARCHAR(200) NOT NULL)
CREATE INDEX ix_myqueue(priority, id)
INSERT
INTO myqueue (priority, payload)
VALUES (0, 'Regular message')
INSERT
INTO myqueue (priority, payload)
VALUES (1, 'Urgent message')
SELECT id, payload
FROM myqueue
ORDER BY priority DESC, id DESC
TOP 1
id | payload
2 | Urgent message
DELETE
FROM mytable
WHERE id = 2
SELECT payload
FROM myqueue
ORDER BY priority DESC, id DESC
TOP 1
id | payload
1 | Regular message
DELETE
FROM mytable
WHERE id = 1
相关问题
- 1. 插入行和SQL Server CE
- 2. SQL Server CE插入/更新多行
- 3. 插入表中sql的行数顶部
- 4. Sql Server CE插入失败无错
- 5. Sql Server CE 4插入默认值
- 6. 插入SQL Server CE数据库
- 7. SQL SERVER插入表一行
- 8. SQL Server CE加入两个表
- 9. 在SQL Server CE和C#中获取新插入行的主键?
- 10. 在qtablewidget顶部插入行
- 11. 如何插入只有一个IDENTITY列的表(SQL Server CE)
- 12. 的SQL Server CE插入抛出“表名称是无效”
- 13. 导入Excel到SQL Server CE
- 14. SQL CE 3.5插入到多个表中
- 15. SQL Server CE +外部SQL文件
- 16. 将动态行数插入SQL Server
- 17. 将SQL Server CE数据移入SQL Server进行编辑并返回
- 18. 将数据插入SQL Server表
- 19. 将SQL Server 2008表迁移到SQL Server CE
- 20. SQL Server CE BadImageFormat
- 21. SQL Server CE ORM
- 22. Soundex SQL Server CE
- 23. SQL Server:左顶部加入顶部1以选择最多一行
- 24. 仅删除顶部行。 SQL Server
- 25. SQL Server:跟踪表插入
- 26. 插入XML到SQL Server表
- 27. QAbstactTableModel顶部插入
- 28. SQL Server订购顶部
- 29. SQL Server的顶部查询
- 30. SQL Server插入
我正在考虑这样的事情,添加一个优先级列并按顺序排序。希望它允许我修改非空表的模式,谢谢。 – Pablote 2009-02-16 13:06:03