我有两张桌子。表A和B。表A有一列,以自动递增作为主键。
id name date_created
1 Kletian 12-12-12 12:12:12
2 Vormav 12-12-12 12:12:13
3 Agrias 12-12-12 12:12:14
4 Ramza 12-12-12 12:12:15
表B应该有一个引用表A中ID的外键。但是,由于ID是自动递增的(由mysql生成),因此我无法使用服务器端编程来分配它(我使用PHP进行插入)。但是,在表A中,有一列date_created和datetime属性。
通常,这是表B应该看起来像:
id images
1 abc.jpg
1 def.png
1 ghi.jpg
2 jkl.png
3 mno.jpeg
3 pqr.png
这是我对表B的计划:
date_created images
12-12-12 12:12:12 abc.jpg
12-12-12 12:12:12 def.png
12-12-12 12:12:12
12-12-12 12:12:13
12-12-12 12:12:14
12-12-12 12:12:14 pqr.png
注意:
通过服务器端编程(PHP)获取自动增量值不可靠。由于用户可以删除记录并弄乱订单。
我具有更改表结构的特权。可以进行较小的更改,但是禁止进行较大的更改。
我的计划安全吗,或者还有其他选择?
最佳答案
序列号:占据表A中的一列,当您插入新条目时该列会递增(不是自动递增),例如:
seq_no | name
1 | Kletian
3 | Agrias
因此,当您要在表A中进行新输入时,只需获取
MAX()
的seq_no
并将其递增1。同样在表B中,使
seq_no
像外键一样,如下所示:seq_no | images
1 | abc.jpg
3 | efg.jpg
关于php - 在表中使用datetime列作为外键是否安全?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42336005/