MySQL用户自动增量权限限制

问题描述:

我有两个数据库需要在同步的各个表上有自动增量ID。现在,我有一个PHP函数检查两个表的当前自动增量ID,然后将最低值设置为最高值。如果有更好的方法来做到这一点,我全部都是耳朵。MySQL用户自动增量权限限制

我真的不想给网络用户更改权限,因为SQL注入可以清除所有密码(或其他愚蠢的东西)。有没有办法限制MySQL用户更改自动增量而不打开它改变语句?

在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 
+0

我认为只适用于MSSQL。我无法在MySQL上找到任何有关此信息。如果你有我缺少的链接,那将会非常有帮助。 – psayre23 2010-03-19 18:03:29

+1

你说得对。在MySQL中,您实际上可以设置标识列的值。 MySQL会自动使用下一个更高的值。我会更新我的答案。 – 2010-03-19 18:15:33

+0

我实际上是在谈论保持同步的不同数据库上的两个相同的表。问题是当我将数据从数据库移到另一个时,所有的链接都被破坏了。而不是保留一个连接表并重做它们,我要确保没有任何键会发生冲突。我发现它可能适用于触发器和存储过程,但我不确定这是否是解决方案。 – psayre23 2010-03-20 03:21:53

“我有两个数据库需要在同步的各个表上有自动增量ID。”

WAT?

“我实际上是在谈论保持同步的不同数据库上的两个相同的表。”

如果你想复制同一张表,以便它可以在两台不同的机器*问,你应该使用MySQL复制,而不是试图从头重新实现它。

如果您不想完全复制表格,但只是想将数据重新插入到单独的位置,则应首先重做用于插入它的任何代码。

手动尝试同步自动增量ID几乎肯定是错误的事情要做,无论你想要达到什么目的。