sql - 嵌入图像顺序

标签 sql postgresql

让我们考虑一些电子商务网站产品的简单表格

product (id SERIAL PRIMARY KEY, title TEXT, description TEXT, price REAL)

和嵌入图像的单独表格

product_images (id SERIAL PRIMARY KEY, product_id INTEGER, image_url VARCHAR(256))

我想设置在网站上显示这些图像的特定顺序。我想到的第一件事是:将数字列“position”添加到“product_images”,它代表该顺序中的位置(例如 position=2 表示图像显示在第二位)。但在这种情况下,当删除某些图像时,数据完整性可能会丢失。还有其他选择吗?

最佳答案

您可以像您提到的那样向 product_images 表添加一个position 列。

那么你有多种解决方案:

  1. 您始终在该列上使用 order by 子句进行选择,因此即使位置之间存在间隙,图像也会在前端得到很好的排序。在您的后台,让用户设置他想要的任何整数。

  2. 您希望始终有连续的位置编号,因此您必须创建一个触发器,它会将已删除图像的所有上级位置的所有位置降低 1。这种情况将迫使您考虑对现有职位进行更新、删除和新图像。

关于sql - 嵌入图像顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48928833/

相关文章:

Java SQL : use previously existing result sets

sql - 我在 SQL 到 LINQ 转换中做错了什么?

sql - 使用 row_to_json() 中的值更新 jsonb 列

ruby-on-rails - 使用连接表的行存在作为别名

postgresql - 如何在 Postgresql 中进行 "case-insensitive"查询?

python - 将数据库名称插入Sqlite3命令中

mysql - M2M 关系还是 2 个 FK?

postgresql - CakePHP 在 WHERE 子句中的函数名称周围添加引号

php - 将数组传递给sql查询不起作用

python - 如何从具有更改日志的表和 Django 中的事件表中获取可以推迟给定日期的事件?