在MySQL中,我需要一个只存储一个静态值的表,应用程序可以根据需要访问和更改该静态值。为此,我必须确保不能插入另一行。如何在不允许插入的情况下创建MySQL表
所以我需要创建一个表,允许更新操作,但没有插入和删除操作。 是否有另一种方法检查触发器中表的大小,如果> 1取消操作?
在MySQL中,我需要一个只存储一个静态值的表,应用程序可以根据需要访问和更改该静态值。为此,我必须确保不能插入另一行。如何在不允许插入的情况下创建MySQL表
所以我需要创建一个表,允许更新操作,但没有插入和删除操作。 是否有另一种方法检查触发器中表的大小,如果> 1取消操作?
如前所述Stephan的一个可能的解决方案是通过创建另一用户和指定这样的权限,从该表中的行不能被插入或删除。我认为这是一个很好的解决方案,但由于我通过现有的用户访问多个表,并且我不想创建另一个表,我用两个触发器解决了问题。
因此,这里是我的解决方案:
触发:On_Insert_Check_Count
BEGIN
IF ((SELECT COUNT(*) FROM oe_last_tabkey) >= 1) THEN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "DIE: Only Update allowed on this table.";
END IF;
END
触发:On_Delete
BEGIN
SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "DIE: Only Update allowed on this table.";
END
通过这一解决方案,每次的任何用户试图插入(只要有分钟1行存在)或删除,MySQL将通过消息取消操作:“DIE:只允许在此表上更新”。
如果你不想更新或插入,你如何改变任何东西? –
应该允许更新,只允许插入和删除 – Jbartmann
如果您已经知道表的记录的确切数量,那么您可以简单地执行查询来检查计数,并且如果它返回的值超过预定义数字,则取消操作。 – har2vey