浏览代码

Mysql change error handle at msg from triggers

Piotr Labudda 10 年之前
父节点
当前提交
a7711179ae
共有 1 个文件被更改,包括 19 次插入5 次删除
  1. 19 5
      SE/se-lib/Core/Database/Mysql.php

+ 19 - 5
SE/se-lib/Core/Database/Mysql.php

@@ -357,6 +357,10 @@ class Core_Database_Mysql extends Core_Database {
 		return "#".mysql_errno($this->_conn).": ".mysql_error($this->_conn);
 	}
 
+	function errno() {
+		return mysql_errno($this->_conn);
+	}
+
 	function get_by_id( $table, $id ) {
 		$null = null;
 		$sql = "select p.*
@@ -513,20 +517,30 @@ class Core_Database_Mysql extends Core_Database {
 		$sql = "update `{$table}` set ".implode(",", $sql_arr)." where `ID`='{$id}' limit 1; ";
 		$this->query($sql);
 
+		$returnError = false;
+		$skipDbErrorAddHist = false;
 		if ($this->has_errors()) {
-			return -1;
+			$returnError = true;
+			if (1146 == $this->errno()) {
+				$skipDbErrorAddHist = true;
+			}
 		}
 
-		$ret = $this->affected_rows();
-		if ($ret) {
+		$returnCode = 0;
+		$affected = $this->affected_rows();
+		if ($affected || $skipDbErrorAddHist) {
+			$returnCode = 1;
 			$sql_obj->ID_USERS2 = $sql_obj->$primary;
 			unset($sql_obj->$primary);
 			$new_id = $this->ADD_NEW_OBJ("{$table}_HIST", $sql_obj);
 			if ($new_id) {
-				$ret += 1;
+				$returnCode += 1;
 			}
 		}
-		return $ret;
+		if ($returnError) {
+			return -1;
+		}
+		return $returnCode;
 	}
 
 	function ADD_NEW_OBJ( $table, $sql_obj,$dieonerror=null ) {