是否可以获取MySQL DB中条目的ID? 或者甚至更好地将ID的值复制到另一个字段中? 例如,我有:
ID
和User_ID
我希望它们始终是相同的值
--------------------
| ID User_ID |
| 1 1 |
| 2 2 |
| 3 3 |
| 4 4 |
| 5 5 |
--------------------
等等
答案 0 :(得分:2)
我发现你的需求非常值得怀疑,并且有一种设计气味。不过,您有机会实现您的目标。关键是触发器。
您可以在这里找到 TRIGGER SYNTAX
基本上你需要定义一个正确的 AFTER INSERT 触发器。
插入没有设置user_id字段的行,读取触发器内的自动增量id并根据需要设置user_id值。
我不会发表一个例子,因为手册非常有说服力,无论如何都是一本很好的阅读。
为什么我认为你的想法很糟糕?好吧,你是复制数据(根据你的定义,“你希望它们总是相同的”),而不是获得价值。所有权利都是完全没用的重复列,可以删除。如果您将它们用作键或外键引用,则这两列完全可以互换。因此,只需删除其中一个并完成它。
答案 1 :(得分:0)
在致电mysql_insert_id()
mysql_query
或者mysqli_insert_id()
正在使用mysqli_而不仅仅是mysql _
此处更多信息http://uk1.php.net/mysql_insert_id请注意,所有mysql_
函数现已弃用,因此我建议使用mysqli_或PDO。
答案 2 :(得分:0)
if(mysql_query("INSERT INTO `users` (`name`) VALUES ('name')")){
$id = (int)mysql_insert_id();
mysql_query("UPDATE `users` SET `User_ID` = {$id}");
}
但从一开始就不是好主意:)。
答案 3 :(得分:0)
如果您正在使用自动增量,那么您想要的是内部:
SELECT AUTO_INCREMENT FROM information_schema.tables
WHERE table_name = 'myTable' AND table_schema = DATABASE( )
所以在这种情况下使用例如:
INSERT INTO myTable (ID, User_ID) values ( NULL ,
(
SELECT AUTO_INCREMENT FROM information_schema.tables
WHERE table_name = 'myTable' AND table_schema = DATABASE( )
)
);
Null表示自动增量ID。子查询将产生要使用的自动增量ID。
如果您没有使用自动增量,那么您只需执行以下操作:
INSERT INTO myTable (ID, User_ID) values ( 5 , ID );
...因此将ID引用到User_ID