Files
mrbs-equbao-2026/upgrade/41/pgsql.sql
T
人事系统开发 1ba6efd8ed MRBS 1.12.2 等保2.0二级整改完整提交
包含:登录失败锁定、90天密码有效期、30分钟会话超时、
强制改密、登录审计日志、屏幕水印、企业背景图、
备案信息固定底部、favicon、JS空集合保护、
会话过期体验优化(403 JSON)、display_errors 关闭、
固定 key 根治 Integrity check failed 等全部改动

注意:config.inc.php/.htaccess/.user.ini 含敏感信息,
通过 .gitignore 排除,勿推送到公开仓库。
2026-09-09 16:55:02 +08:00

35 lines
1.4 KiB
SQL

-- Make mrbs_entry.repeat_id a foreign key
-- Previously repeat_id was set to zero if there was no repeat.
-- However this breaks our foreign key constraint so we have to modify
-- the repeat_id column before we can create the foreign key.
ALTER TABLE %DB_TBL_PREFIX%entry
ALTER COLUMN repeat_id DROP DEFAULT,
ALTER COLUMN repeat_id DROP NOT NULL,
ALTER COLUMN repeat_id SET DEFAULT NULL;
UPDATE %DB_TBL_PREFIX%entry
SET repeat_id=NULL WHERE repeat_id=0;
-- Tidy up the database getting rid of any zombie rows which would prevent
-- the foreign key being created. Note that these rows will not be visible to users
-- and admins through MRBS. They have most likely been created when a row has been
-- deleted from a table using a database admin tool, rather than through MRBS. Of course,
-- foreign keys will stop this happening in the future.
DELETE FROM %DB_TBL_PREFIX%entry
WHERE repeat_id IS NOT NULL
AND repeat_id NOT IN (SELECT id FROM %DB_TBL_PREFIX%repeat);
-- Also, while we're at it, get rid of any redundant entries in the repeat table, ie rows
-- that are not referenced by a row in the entry table.
DELETE FROM %DB_TBL_PREFIX%repeat
WHERE id NOT IN (SELECT repeat_id FROM %DB_TBL_PREFIX%entry WHERE repeat_id IS NOT NULL);
ALTER TABLE %DB_TBL_PREFIX%entry
ADD FOREIGN KEY (repeat_id)
REFERENCES %DB_TBL_PREFIX%repeat(id)
ON UPDATE CASCADE
ON DELETE CASCADE;