我需要防止应用程序核心表格的意外更改。在应用程序运行期间,我不希望任何人更改行,但是,在部署新版本应用程序时,我会进行更改。例如:
理想情况下,在应用程序正常运行期间,如果有人尝试更改它,会显示错误消息。类似这样的内容:
有什么最佳方法可以实现这个吗?
create table procedure (
id int primary key not null,
name varchar(50) not null
);
insert into procedure (id, name) values (1, 'Send Exam Request');
insert into procedure (id, name) values (2, 'Confirm Exam Data');
insert into procedure (id, name) values (3, 'Close Visit');
-- Now, make the table read-only.
太棒了,应用程序的第一个版本已经成功地运行在生产环境中。
下个月当我部署应用程序的下一个版本时:
-- Make the table read-write.
insert into procedure (id, name) values (4, 'Request Visit'); -- new proc
delete from procedure where id = 2; -- remove old unsupported proc
-- Now, make the table read-only again.
理想情况下,在应用程序正常运行期间,如果有人尝试更改它,会显示错误消息。类似这样的内容:
insert into procedure (id, name) values (5, 'New bad procedure');
ERROR: Cannot modify table procedure.
Contact the system administrator if you want to make this change.
有什么最佳方法可以实现这个吗?
ALTER TABLE table_name DISABLE TRIGGER no_change_trigger
和ALTER TABLE table_name ENABLE TRIGGER no_change_trigger
。 - The Impaler