- Tìm số 0 đầu tiên trong một mảng bit
- Unix Hiển thị thông tin về các tập tin khớp với một trong hai mẫu
- Biểu thức chính quy thay thế nhiều tệp
- Ẩn lệnh từ xtrace
我有一个 (Postgres) 数据库表,我想在其中添加一个手动“排序”字段。在应用程序的前端,我将有一个拖放字段,以便用户可以手动重新排序条目,然后应该发布一个 AJAX 请求来重新排序数据库中的条目,我只是想知道如何在数据库中编排它。
例如,我能想到的最明显的选择是为每个排序值 >= 新排序选项的条目增加“排序”整数,但这将是过度的(我认为,不必要的)如果这些列表超出了少数几个项目,数据库就会很沉重。
另一种选择是将“排序”列设为 BigDecimal 并为其赋值
SortValue[A] = SortValue[B] + (SortValue[C] - SortValue[B])/2
A 是我要重新排序的字段,B 是它正上方的字段,C 是它下面的字段,但这似乎是一个非常困惑的解决方案,更不用说可能受到小数位限制的限制。
我确信这是一个非常普遍的问题。有效允许对数据库表进行手动排序的标准方法是什么?
干杯...
1 Câu trả lời
假设你有这样的数据:
id | pos
---+----
8 | 1
3 | 2
6 | 3
7 | 4
2 | 5
1 | 6
并且您想将 2 从位置 5 移动到位置 3。
您需要做的就是:
update t set pos = pos + 1 where pos >= 3 and pos < 5
打洞:
id | pos
---+----
8 | 1
3 | 2
|
6 | 4
7 | 5
2 | 5
1 | 6
然后是:
update t set pos = 3 where id = 2
填坑:
id | pos
---+----
8 | 1
3 | 2
2 | 3
6 | 4
7 | 5
1 | 6
当然,您可以将所有这些更新包装在一个事务中。
如果您限制 Điểm bán hàng
以避免重复(一个好主意),那么您可以使用 pos = 0
作为临时值:
update t set pos = 0 where id = 2;
update t set pos = post + 1 where pos >= 3 and pos < 5;
update t set pos = 3 where id = 2;
或者,如果您使用的是最新版本的 PostgreSQL(AFAIK 9.0+),您可以 defer your unique constraint到交易结束,而不必担心临时重复。
其他情况类似,留作练习。
关于数据库模式 : What's the standard way for manually sorting a table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8623250/
关闭。这个问题需要更多 focused .它目前不接受答案。 想要改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 5 年前。 Improve this q
我们如何手动启动滑动 Jquery 事件(例如用于点击事件的 $('div').click(); )? $('div').live('swipeleft'); 无法执行此操作。 最佳答案 根据您正在使
我想做一个std::function像可以处理存储多个重载的对象。 语法有点像这样:my_function . 或者,更明确地说: template struct type_list {}; temp
1. macvlan 简介 在 macvlan 出现之前,我们只能为一块以太网卡添加多个 ip 地址,却不能添加多个 mac 地址,因为 mac 地址正是通过其全球唯一性来标识一块以太网卡的,即便
我只想在 shell(或 perl)脚本中获取 MAN 页面的特定部分并打印它。 例如:仅 MAN 页面的 SYNOPSIS 部分 有没有标准的方法来做到这一点? 问候, 阿南丹 最佳答案 据我所知,
我正在使用以下代码为 Woocommerce 创建一个新的自定义订单状态。我遇到的问题是,在管理员中,状态显示为无样式。如何以类似于“处理”的方式设置自定义状态的样式? /* Adding a new
我希望在 MOSS 2007 中创建一个“在线手册”站点模板,以便创建多个站点,这些站点将保存有关一系列主题的静态信息。 我应该使用什么网站模板,我目前正在考虑发布网站,但 Wiki 可能有用? 我应
简单来说,我在客户的整个网站上使用外部 PHP 脚本来实现各种目的,例如获取搜索结果、更新内容等。 我将这些脚本保存在一个目录中: www.domain.com/scripts/scriptname0
在具有 Spring MVC 和 Spring Security 的 Web 应用程序中。 有没有办法手动设置 UserPrincipal? 我需要通过我的 web 应用程序的管理部分切换到另一个用户
我发现我可以使用migrations.RunSQL('some sql')为django项目中的postgres数据库设置列的默认值。 我目前正在通过添加列,makemigrations,然后删除列,
我的 web 应用程序(Spring3 + Hibernate3)始终使用使用 @Transactional 注释的服务类以及以下配置: 现在...我正在使用
我们是否可以手动登录用户并创建一个 TWTRSession 以便继续与 TwitterKit 一起使用?我已经尝试过: NSDictionary *twSessionInfo = [self.acco
我有这个功能: int cipher_file(char *file_path, uint8_t *key, int key_size){ FILE *file; size_t rea
仅当单击按钮 #collapse_init 时,我才能根据 active bool 变量将按钮上的文本更改为“全部显示”或“全部隐藏” 当我手动隐藏/折叠选项卡(一个接一个)时,按钮上的文本没有改变,
我正在尝试从 OpenCV 中重现 projectPoints() 方法的行为。 下面两张图中,红/绿/蓝轴是用OpenCV的方法得到的,而洋红/黄/青轴是用我自己的方法得到的: 图片1 图片2 用我
鉴于 LISP 显然可以用“LISP 微型手册”的“10 条规则”来表达 [1] [2] (这是真的吗?),是否有类似简洁的Scheme描述? 最佳答案 这里麦卡锡的“10 条规则”本质上是操作语义的
手动,我的意思是代码好像我需要迎合,就好像对象不是我期望的那样。 例如,我正在使用中继器。作为其中的一部分,我正在操纵 DataSource 属性。为此,我必须先检查以下内容: this.DataSo
这个问题在这里已经有了答案: Spring Data JPA Update @Query not updating? (5 个答案) 关闭 2 年前。 社区在 去年 审查了是否重新打开这个问题并将其
我真的是 Spring 的新手我正在使用 JSF+Hibernate+Spring 开发一个简单的 JEE 应用程序我在尝试更新 DAO 上的值时遇到了一些问题我确定问题与 Spring 配置 xml
我想对在Web应用程序中在服务器和客户端之间来回传输的数据进行加密。我会使用SSL,但是需要证书和专用IP地址。获得证书没有问题,但专用IP需要我升级到企业托管计划,该计划是在Web主机上每月支付20
Tôi là một lập trình viên xuất sắc, rất giỏi!