2015-10-11 58 views
0

我使用這些表來存儲數據。 我想從所有表中刪除所有超過1個月(例如)使用一個SQL查詢的數據。從幾個表中刪除行

-- TABLE AGENT_HISTORY 

CREATE TABLE AGENT_HISTORY(
    EVENT_ID INTEGER NOT NULL, 
    AGENTID INTEGER NOT NULL, 
    EVENT_DATE DATE NOT NULL 
) 
/

CREATE TABLE CPU_HISTORY(
    CPU_HISTORY_ID INTEGER NOT NULL, 
    EVENT_ID INTEGER, 
    CPU_NAME VARCHAR2(50) NOT NULL, 
    CPU_VALUE NUMBER NOT NULL 
) 
/

CREATE TABLE CPU_TEMP_HISTORY(
    CPU_TEMP_HISTORY_ID INTEGER NOT NULL, 
    EVENT_ID INTEGER, 
    CPU_TEMP_NAME VARCHAR2(50) NOT NULL, 
    CPU_TEMP_VALUE NUMBER NOT NULL 
) 
/

CREATE TABLE MEMORY_HISTORY(
    MEMORY_HISTORY_ID INTEGER NOT NULL, 
    EVENT_ID INTEGER, 
    MEMORY_NAME VARCHAR2(50) NOT NULL, 
    MEMORY_VALUE NUMBER NOT NULL 
) 
/

CREATE TABLE DISK_HISTORY(
    DISK_HISTORY_ID INTEGER NOT NULL, 
    EVENT_ID INTEGER, 
    DISK_NAME VARCHAR2(50) NOT NULL, 
    DISK_VALUE NUMBER NOT NULL 
) 
/

CREATE TABLE NETWORK_HISTORY(
    NETWORK_HISTORY_ID INTEGER NOT NULL, 
    EVENT_ID INTEGER, 
    ADAPTER_NAME VARCHAR2(50) NOT NULL, 
    TRANSMITBYTES NUMBER NOT NULL, 
    TRANSMITSPEED NUMBER, 
    RECEIVESPEED NUMBER, 
    RECEIVEBYTES NUMBER 
) 
/

CREATE TABLE SWAP_HISTORY(
    SWAP_HISTORY_ID INTEGER NOT NULL, 
    EVENT_ID INTEGER, 
    SWAP_NAME VARCHAR2(50) NOT NULL, 
    SWAP_VALUE NUMBER NOT NULL 
) 
/

CREATE TABLE CONNECTIONS_HISTORY(
    CONNECTIONS_HISTORY_ID INTEGER NOT NULL, 
    EVENT_ID INTEGER, 
    CONNECTIONS_NAME VARCHAR2(50) NOT NULL, 
    CONNECTIONS_VALUE NUMBER NOT NULL 
) 
/

CREATE TABLE PARTITIONS_HISTORY(
    PARTITIONS_HISTORY_ID INTEGER NOT NULL, 
    EVENT_ID INTEGER, 
    PARTITIONS_NAME VARCHAR2(50) NOT NULL, 
    PARTITIONS_VALUE NUMBER NOT NULL 
) 
/

這在Oracle中可能嗎? 我使用EVENT_ID作爲所有表中唯一的密鑰ID。

+1

只有一個表具有'日期'列,所以不清楚你打算在其他表中刪除什麼。 –

+0

你的意思是EVENT_ID作爲唯一鍵嗎? – leeor

+0

是的,抱歉的錯誤。 –

回答

1

正如「a_horse_with_no_name」所示,您可以通過創建所需的關係使用ON DELETE CASCADE

例如,

ALTER TABLE table_name 
ADD CONSTRAINT constraint_name 
    FOREIGN KEY (column1, column2, ... column_n) 
    REFERENCES parent_table (column1, column2, ... column_n) 
    ON DELETE CASCADE; 

書籤的Database SQL Language Reference並開始閱讀的理念,爲更好的理解。

+0

你能告訴我完整的SQL查詢的例子嗎? –