MySQL用户自动增量权限限制

MySQL用户自动增量权限限制,mysql,Mysql,我有两个数据库需要在不同的表上同步它们的自动增量ID。现在,我有一个PHP函数,它检查两个表的当前自动增量id,然后将最低值设置为最高值。如果有更好的办法,我洗耳恭听 我真的不想给web用户alter权限,因为SQL注入可以清除所有密码(或其他愚蠢的东西)。有没有办法限制MySQL用户更改自动增量而不打开它来更改语句?在MySQL中,可以设置自动增量列的值。MySQL将自动使下一个排名更高。假设到目前为止我有两条记录,因此自动递增id字段中的最大值是2。我插入一条新记录,指定值 INSERT I

我有两个数据库需要在不同的表上同步它们的自动增量ID。现在,我有一个PHP函数,它检查两个表的当前自动增量id,然后将最低值设置为最高值。如果有更好的办法,我洗耳恭听


我真的不想给web用户alter权限,因为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
“我有两个数据库需要在不同的表上同步它们的自动增量ID。”

WAT?


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

如果您想复制同一个表,以便在两台不同的机器上访问它,那么应该使用MySQL复制,而不是尝试从头开始重新实现它

如果您不想精确地复制表,而只想在单独的位置重新插入数据,那么应该重做在第一位置插入数据时使用的任何代码


手动尝试同步自动增量ID几乎肯定是错误的,无论您试图实现什么。

我认为这只适用于MSSQL。我在MySQL上找不到这方面的任何信息。如果你有我丢失的链接,那将非常有用。你是对的。在MySQL中,您实际上可以只设置标识列的值。MySQL将自动为下一个使用下一个更高的。我会更新我的答案。我实际上是说保持两个相同的表在不同的数据库同步。问题是,当我将数据从数据库移动到另一个数据库时,我的所有链接都会断开。与其保留一个连接表并重做它们,我将确保所有键都不会冲突。我发现它可能适用于触发器和存储过程,但我不确定这是否是解决方案。我实际上是说保持不同数据库上两个相同表的同步。->您不能使用复制吗?我的另一个想法是获取最后一个id,并在插入第二个db时使用它来确保记录是相同的。