我有两个数据库需要在同步的各个表上拥有自动增量ID。现在,我有一个PHP函数,它检查两个表的当前自动增量id,然后将最低值设置为最高值。如果有更好的方法来做到这一点,我会全力以赴。
我真的不想给网络用户更改权限,因为SQL注入可以清除所有密码(或其他傻事)。有没有办法限制MySQL用户更改自动增量而不打开它来改变语句?
答案 0 :(得分:0)
在MySQL中,您可以设置自动增量列的值。 MySQL将自动使下一个数字更高。假设我到目前为止有两条记录,因此自动增量id
字段中的最高值为2
。我插入一条新记录,指定值。
INSERT INTO User (id, name) values(5, 'john')
下一个id值为6:
INSERT INTO User (name) values('dave')
无需更改表格。
在MSSQL中,你需要翻转一个开关来做同样的事情。
SET IDENTITY_INSERT ON
答案 1 :(得分:0)
“我有两个数据库需要在同步的各个表上拥有自动增量ID。”
<强> WAT吗
“我实际上是在讨论在同一个不同数据库上保留两个相同的表格。”
如果要复制同一个表以便可以在两台不同的计算机上访问它,则应该使用MySQL复制,而不是尝试从头开始重新实现它。
如果您不想完全复制表,但只是想在一个单独的位置重新插入数据,则应该首先重做用于插入数据的代码。
无论您想要实现什么,手动尝试同步自动增量ID几乎肯定是错误的。