【发布时间】:2011-11-11 14:13:06
【问题描述】:
这是一种概念证明草案,以使事情正常运行,但不希望有完全废话的代码。对于我的数据库,我尝试使用 innoDB 获取真正的外键关系,但无法获取。
我决定不使用外键,而是在插入后提取 mysql_insert_id(),将其保存为变量,然后将该变量放入相关表中。
这很可怕吗?一切似乎都运行良好,我可以根据需要连接和关联 ID。使用外键对我的方法有什么好处(除了更新/删除级联)?
【问题讨论】:
-
如果我理解正确,您正在做类似
mysql_query('INSERT INTO master...'); $master_id = mysqsl_insert_id(); mysql_query("INSERT INTO detail (master_id, ...) values ('$master_id', ...)");的事情。那么不,这并不可怕,这是您创建关系唯一可以做的事情。唯一的另一种方法是使用"natural keys" 或您的应用程序生成的密钥,但唯一的区别是您没有使用mysql_insert_id获得ID,而是从用户那里获得。外键到底是什么意思? -
我正在尝试比较使用 mysql_insert_id 将关系实际烘焙到数据库中:
ADD CONSTRAINT 'mytable' FOREIGN KEY ('my_id') REFERENCES 'othertable' ('other_id') ON DELETE CASCADE ON UPDATE CASCADE; -
不让我编辑我的评论,但要确认您的假设:是的,这正是我正在做的。
-
感谢您的澄清,我现在添加了一个答案 - 我希望它能回答您的问题。
标签: php mysql foreign-keys relational-database mysql-insert-id