让我们考虑一些电子商务网站产品的简单表格
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 列。
那么你有多种解决方案:
您始终在该列上使用
order by
子句进行选择,因此即使位置之间存在间隙,图像也会在前端得到很好的排序。在您的后台,让用户设置他想要的任何整数。您希望始终有连续的位置编号,因此您必须创建一个
触发器
,它会将已删除图像的所有上级位置的所有位置降低 1。这种情况将迫使您考虑对现有职位进行更新、删除和新图像。
关于sql - 嵌入图像顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48928833/