MYSQL审计程序和触发器

时间:2017-07-25 09:25:28

标签: php mysql

我需要为表更改创建审核记录。为此,我使用了这个触发器

BEGIN
CALL proc_audit_trasabilitate(new.stare,new.serie,new.id_palet);
END

在触发器内调用此过程:

BEGIN
DECLARE v_username VARCHAR(50); 
SELECT @php_user_name into v_username;
INSERT INTO stari_istoric (stare,serie,id_palet,username) VALUES(p_stare,p_serie,p_id_palet,v_username);
END

基本上插入工作后的触发器和插入的用户名和其他字段但是当我在更新表后使用新的触发器(与插入的触发器相同)时,用默认值NULL上传用户名。

@php_user_name的填充方式如下:

if (isset($_SESSION['username'])) {
    require_once 'libraries/Audit.class.php';
    $db_ses_set = Audit::set_mysql_session_parameter('php_user_name',$_SESSION['username'],$db; }

使用Audit.class:

<?php
class Audit {

public static function set_mysql_session_parameter($parameter_name,$parameter_value, $db) {
                $query = "SET @" . $parameter_name . " = '" .$parameter_value. "';";
                $result = $db->query($query);
                return $result;
           }
}

?>

1 个答案:

答案 0 :(得分:0)

当您使用更新触发器时,将删除:旧值,并且:#new 34将插入&#34;。我认为在你的情况下,你以某种方式返回:旧值,这就是为什么值为Default,NULL

  1. 插入 - &gt; :新值
  2. 删除 - &gt; :旧值
  3. 更新 - &gt; :新的&amp; :旧值