保护MySQL中的特定对象id不被删除

保护MySQL中的特定对象id不被删除,mysql,sql,Mysql,Sql,我的数据库中有97个包含核心数据的对象,范围从id=1到id=97。有没有办法只保护这些对象(=等于列名)而不删除整个列 从对象中选择*返回类似 id | ... 1 | ... // <- should be protected 2 | ... // <- should be protected 3 | ... // <- should be protected ... | ... 97 | ... // <- last obje

我的数据库中有97个包含核心数据的对象,范围从id=1id=97。有没有办法只保护这些对象(=等于列名)而不删除整个列



从对象中选择*返回类似

id | ... 

1 | ...    // <- should be protected

2 | ...    // <- should be protected

3 | ...    // <- should be protected

... | ...

97 | ...    // <- last object to be protected

98 | ...  // <- should not be protected!!!
id |。。。

1 | ... // 您可以通过创建另一个使用外键约束引用此表的表,并在DELETE RESTRICT上执行此操作

CREATE TABLE protected_objects (
    obj_id INT
    FOREIGN KEY(obj_id)
        REFERENCES objects(id)
        ON DELETE RESTRICT
)

可以在“受保护的对象”表中创建行,列出应保护的对象。您可以根据您的使用情况限制受保护对象表上的权限来控制保护和取消保护对象的能力。

您可以通过创建另一个带有外键约束的表来引用此表,并在删除限制时执行此操作

CREATE TABLE protected_objects (
    obj_id INT
    FOREIGN KEY(obj_id)
        REFERENCES objects(id)
        ON DELETE RESTRICT
)

可以在“受保护的对象”表中创建行,列出应保护的对象。您可以根据您的使用情况限制受保护对象表上的权限,从而控制保护和取消保护对象的能力。

考虑改用PostgreSQL,因为PostgreSQL具有现成的基于应用程序用户的记录访问策略。。在MySQL中,您必须使用
视图和或多或少解释的函数来模拟它。。注意,您仍然需要修改SQL代码以满足您的需要。我必须创建一个视图您是对的,忘记了这一点您可以拥有一个表,其中列出需要保护的
id
s,并与主表中的记录创建外键关系。这样,当您试图删除受保护的记录时,引用完整性将保护它们。考虑使用PostgreSQL作为PostgreSQL具有基于应用程序用户的记录访问策略。在MySQL中,您必须使用
视图和或多或少解释的函数来模拟它。。注意,您仍然需要修改SQL代码以满足您的需要。我必须创建一个视图您是对的,忘记了这一点您可以拥有一个表,其中列出需要保护的
id
s,并与主表中的记录创建外键关系。这样,当您试图删除受保护的记录时,引用完整性将保护它们。