我的数据库中有一张表存储我网站使用的视频文件的路径。这些文件存储在 SSD 磁盘中。
path character varying(255)
id serial
路径永远是这样的:
/files/client/\d+/(attachment|user)/\d+/(main|thumbnail)
以下是有效路径的一些示例:
/files/client/743052/attachment/2123598/main
/files/client/743052/attachment/2123598/thumbnail
/files/client/1475296/user/3541234/main
/files/client/1475296/user/3541234/thumbnail
问题:
如何创建一个触发器来检查值WHEN INSERTED
,如果该行小于最小路径 ( /files/client/\d+/(attachment|user)/\d+/(main|thumbnail)
) 则引发异常?
我正在使用 PostgreSQL 9.1。
更新:
这里还有一些例子:
/files/client/45345/user/3542341234/main -- PASS
/files/client/45345/user/3542341234/thumbnail -- PASS
/files/client/253623/attachment/35334/main -- PASS
/files/client/253623/attachment/35334/thumbnail -- PASS
/files/client/45312341245/users/12545/main -- WRONG!
/files/client/45312341245/users/12545/thumbnail -- WRONG!
/files/client/45345/attachment/1223545/mains -- WRONG!
/files/client/45345/attachment/1223545/thumbnails -- WRONG!
您可以简单地使用检查约束,但我会亲自重组我的架构。本质上你似乎在做的是将大量数据序列化到一个路径中,然后你想确保它是正确的。从我的角度来看,这有点糟糕。
我可能会走相反的方向并在某种程度上正常化。
归一化
规范化看起来像这样,