好的,这就是我想做的。
表 1(globalID [主键,自动递增](是我将在 PHP 中使用的全局 id))
Table2 & table3( ID * [外键,引用globalID],后面的其他列,表2和表3各不相同);
我想知道的是是否有办法以及如何做到这一点,以便当我在 table2 或 table3 中插入一行时,talbe1 中的 globalID 被填充,并且它的值也相应地作为 ID 插入到 table2 或 table3 中。我认为这将通过触发器来完成,但触发器不是我的强项,所以如果这是唯一可以完成的方法,请提供一个示例。
我也在考虑将其扩展到这种情况:
Table1( globalID [primary key, autoincremented] (是我在 PHP 中使用的全局 id), OtherID [an UUID]);
Table2 & table3( ID * [外键,引用OtherID],后面的其他列,表2和表3各不相同);
但在这种情况下,仍然几乎不存在 2 个用户在某个表中插入新行时生成相同 UUID 的可能性。我想知道是否可以通过使 sql 服务器自动生成密钥来避免这种情况,而无需我在 PHP 服务器端对其进行编码。
如果有人解决了这个问题并且还可以指出我需要注意或考虑的其他事项,请指出。另请提供解决方案的示例。
编辑:
@约翰B。
由 TosheX 编辑
感谢您的答复。与此同时,我一直在阅读这方面的内容,并且我已经有了 SQL 之外的解决方案(在 php 中)。基本上我使用 Yii PHP 框架,在其中创建表格模型,并创建一个活动记录来填充新行。现在,当我这样做时,会生成 table1 中的 ID,然后我仍然有一个指向该填充行的变量,我可以读取生成的 ID,因为它是自动获取的(无需检查数据库中的最后一条记录,这可能会返回某人在我之后创建的几毫秒的记录)。之后我只需要在适当的 table2 或 3 中创建一行并为 ID 分配已经生成的值。
我在这里找到了这个想法:
http://www.yiiframework.com/forum/index.php/topic/14593-alternate-for-mysql-insert-id/
我真的想在数据库中有一个内置的解决方案,但是因为我有数据库经验并且对触发器有足够的了解(足够不喜欢它们:D)我知道这是一个非常棘手的代码,所以我想知道是否有替代方案自动填充什么的。
不过,我真的很感谢您的回复,因为您花了很多时间。我也一直在 msSQL 中工作,我在你所说的中找到了逻辑。mySQL 中的 UUID 与 msSQL 中的 GUID 相同,如您所见,我也考虑过这一点。
考虑到所有这些,我将采用我找到的解决方案,但我会接受您的回答,因为您确实尝试提供帮助,并且您确实提出了一些好主意。
再次感谢。