post['code'] )); if (pg_fetch_assoc($exists)['exists'] == 't') { return "REPLICATED"; } $table_name = "hf_mes_scada_data_capture_node_data_" . $this -> post['working_subclass']; pg_query($this -> dbconn, "BEGIN"); $res[] = pg_query($this -> dbconn, sprintf( "CREATE TABLE IF NOT EXISTS %s ( id serial8, code text references hf_mes_scada_data_capture_node_configure(code), v_string text, v_int int, v_float float8, v_bool bool, device_code text, batch text, capture_time timestamp NOT NULL DEFAULT NOW() )", $table_name )); $res[] = pg_insert( $this -> dbconn, 'hf_mes_scada_data_capture_node_configure', $this -> post ); // 检查一下,如果超表已经有了就不要尝试重复创建了 $table_exists = pg_query(sprintf( "SELECT * FROM timescaledb_information.hypertables WHERE hypertable_name = '%s' ", $table_name )); if (!in_array($table_name, pg_fetch_all_columns($table_exists, 1))) { $res[] = pg_query($this -> dbconn, sprintf("SELECT create_hypertable('%s', 'capture_time')", $table_name)); $res[] = pg_query($this -> dbconn, sprintf( "CREATE INDEX ON %s (v_string, v_int, v_float, v_bool, capture_time DESC) WHERE COALESCE(v_string, v_int::text, v_float::text, v_bool::text) IS NOT NULL ", $table_name )); } if (in_array(false, $res)) { pg_query($this -> dbconn, "ROLLBACK"); return false; } else { pg_query($this -> dbconn, "COMMIT"); return true; } } function remove_node() { pg_query($this -> dbconn, "BEGIN"); $res[] = pg_delete( $this -> dbconn, 'hf_mes_scada_data_capture_node_configure', $this -> post, ); $exists = pg_query(sprintf( "SELECT EXISTS( SELECT 1 FROM hf_mes_scada_data_capture_node_configure WHERE code='%s' )", $this -> post['working_subclass'] )); if (pg_fetch_assoc($exists)['exists'] == 'f') { $res[] = pg_query(sprintf( "DROP TABLE hf_mes_scada_data_capture_node_data_%s", $this -> post['working_subclass'] )); } if (in_array(false, $res)) { pg_query($this -> dbconn, "ROLLBACK"); return false; } else { pg_query($this -> dbconn, "COMMIT"); return true; } } function update_node() { return pg_update( $this -> dbconn, 'hf_mes_scada_data_capture_node_configure', $this -> post, ['code' => $this -> post['code']] ); } function get_nodes() { $res = pg_query($this -> dbconn, "SELECT * FROM hf_mes_scada_data_capture_node_configure"); return pg_fetch_all($res); } }