SFI_OPT_ABS是什么意思?
时间: 2024-06-09 14:03:51 浏览: 12
SFI_OPT_ABS是Secure File Input(安全文件输入)选项中的一个常量,它通常在处理敏感文件操作时用于指示绝对路径应该被强制使用。这个选项在一些安全配置中,比如在Linux的安全模块(如SELinux)或安全编程环境中,用于确保文件访问总是使用绝对路径而非相对路径,以防止路径遍历攻击(Path Traversal Attack)。使用绝对路径可以明确指定文件的位置,减少恶意用户通过修改当前工作目录来获取或篡改其他文件的风险。
相关问题
CREATE TRIGGER delete_invoice_complex AFTER DELETE ON t_sfi_inter_invoice FOR EACH ROW BEGIN INSERT INTO t_sfi_inter_bus_complex (TABLE_NAME,OPER_TIME, OPERATION_TYPE, OLD_OBJECT, NEW_OBJECT) VALUES ('t_sfi_inter_invoice',NOW(), 'delete', JSON_OBJECT('id', OLD.ID, 'invoice_no', OLD.INVOICE_NO, 'sum', OLD.SUM, 'fact_sum', OLD.FACT_SUM, 'status', OLD.STATUS, 'business_id', OLD.BUSINESS_ID, 'reinvoice', OLD.REINVOICE, 'is_printed', OLD.IS_PRINTED, 'print_user_id', OLD.PRINT_USER_ID, 'print_user_name', OLD.PRINT_USER_NAME, 'print_date', OLD.PRINT_DATE, 'invoice_type', OLD.INVOICE_TYPE, 'invoice_status', OLD.INVOICE_STATUS, 'tomb_certificate', OLD.TOMB_CERTIFICATE),null); END;字段太多怎么优化成通用的
在MySQL中,你可以使用动态SQL来优化这个触发器,将其转换为通用的形式。
动态SQL允许你在运行时生成SQL语句。你可以使用CONCAT()函数将多个字符串连接起来,从而动态生成SQL语句。例如,你可以使用以下语句:
SET @sql = CONCAT('INSERT INTO t_sfi_inter_bus_complex (TABLE_NAME,OPER_TIME, OPERATION_TYPE, OLD_OBJECT, NEW_OBJECT) VALUES (''t_sfi_inter_invoice'',NOW(), ''delete'',', JSON_OBJECT('id', OLD.ID, 'invoice_no', OLD.INVOICE_NO, 'sum', OLD.SUM, 'fact_sum', OLD.FACT_SUM, 'status', OLD.STATUS, 'business_id', OLD.BUSINESS_ID, 'reinvoice', OLD.REINVOICE, 'is_printed', OLD.IS_PRINTED, 'print_user_id', OLD.PRINT_USER_ID, 'print_user_name', OLD.PRINT_USER_NAME, 'print_date', OLD.PRINT_DATE, 'invoice_type', OLD.INVOICE_TYPE, 'invoice_status', OLD.INVOICE_STATUS, 'tomb_certificate', OLD.TOMB_CERTIFICATE),',null)');
然后,你可以使用PREPARE语句来准备动态SQL语句,并使用EXECUTE语句来执行它:
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
这样,你就可以通过动态SQL来优化这个触发器,使其更加通用。
优化一下CREATE TRIGGER update_invoice_complex AFTER UPDATE ON t_sfi_inter_invoice FOR EACH ROW BEGIN INSERT INTO t_sfi_inter_bus_complex (OPER_TIME, OPERATION_TYPE, OLD_OBJECT,NEW_OBJECT) VALUES (NOW(), 'update',JSON_OBJECT(OLD.ID,OLD.INVOICE_NO,OLD.SUM,OLD.FACT_SUM,OLD.STATUS,OLD.BUSINESS_ID,OLD.REINVOICE,OLD.IS_PRINTED,OLD.PRINT_USER_ID,OLD.PRINT_USER_NAME,OLD.PRINT_DATE,OLD.INVOICE_TYPE,OLD.INVOICE_STATUS,OLD.TOMB_CERTIFICATE),JSON_OBJECT(NEW.ID,NEW.INVOICE_NO,NEW.SUM,NEW.FACT_SUM,NEW.STATUS,NEW.BUSINESS_ID,NEW.REINVOICE,NEW.IS_PRINTED,NEW.PRINT_USER_ID,NEW.PRINT_USER_NAME,NEW.PRINT_DATE,NEW.INVOICE_TYPE,NEW.INVOICE_STATUS,NEW.TOMB_CERTIFICATE)); END;
可以针对该触发器做如下优化:
1. 由于该触发器在每次更新t_sfi_inter_invoice表的一行数据时都会被触发,因此为了提高效率,可以将该触发器改为AFTER UPDATE ON t_sfi_inter_invoice FOR EACH STATEMENT,这样该触发器只会在更新语句执行完毕后被触发一次,而不是每更新一行数据就被触发一次。
2. 可以将JSON_OBJECT函数的调用次数减少为一次,即先将OLD和NEW两个对象分别转换为JSON格式的字符串,再将这两个字符串作为参数调用一次JSON_OBJECT函数,这样可以减少函数的调用次数,提高效率。
优化后的触发器代码如下所示:
CREATE TRIGGER update_invoice_complex AFTER UPDATE ON t_sfi_inter_invoice FOR EACH STATEMENT
BEGIN
DECLARE oldStr, newStr VARCHAR(10000);
SET oldStr = JSON_OBJECT('ID',OLD.ID,'INVOICE_NO',OLD.INVOICE_NO,'SUM',OLD.SUM,'FACT_SUM',OLD.FACT_SUM,'STATUS',OLD.STATUS,'BUSINESS_ID',OLD.BUSINESS_ID,'REINVOICE',OLD.REINVOICE,'IS_PRINTED',OLD.IS_PRINTED,'PRINT_USER_ID',OLD.PRINT_USER_ID,'PRINT_USER_NAME',OLD.PRINT_USER_NAME,'PRINT_DATE',OLD.PRINT_DATE,'INVOICE_TYPE',OLD.INVOICE_TYPE,'INVOICE_STATUS',OLD.INVOICE_STATUS,'TOMB_CERTIFICATE',OLD.TOMB_CERTIFICATE);
SET newStr = JSON_OBJECT('ID',NEW.ID,'INVOICE_NO',NEW.INVOICE_NO,'SUM',NEW.SUM,'FACT_SUM',NEW.FACT_SUM,'STATUS',NEW.STATUS,'BUSINESS_ID',NEW.BUSINESS_ID,'REINVOICE',NEW.REINVOICE,'IS_PRINTED',NEW.IS_PRINTED,'PRINT_USER_ID',NEW.PRINT_USER_ID,'PRINT_USER_NAME',NEW.PRINT_USER_NAME,'PRINT_DATE',NEW.PRINT_DATE,'INVOICE_TYPE',NEW.INVOICE_TYPE,'INVOICE_STATUS',NEW.INVOICE_STATUS,'TOMB_CERTIFICATE',NEW.TOMB_CERTIFICATE);
INSERT INTO t_sfi_inter_bus_complex (OPER_TIME, OPERATION_TYPE, OLD_OBJECT, NEW_OBJECT) VALUES (NOW(), 'update', oldStr, newStr);
END;
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)