首先,我使用的是Postgres 9.1。像引用計數或數據庫行的共享指針?
我有一個名爲filepaths的表和其他表具有指向其相應文件路徑的id的行。有沒有一種通用的設計方法來引用計數文件路徑,以便在其他行被刪除並且不再有任何對特定文件路徑行的引用時,它也可以被刪除?
例子:
[filepaths]
1 | c:\windows\system32\test.exe
2 | c:\windows\calc.exe
[events_2011_08_30]
[1][timestamp][other data] [ filepaths = 1]
[2][timestamp][other data] [ filepaths = 2]
[events_2011_08_31]
[1][timestamp][other data] [ filepaths = 1]
所以我要存儲在表中的數據進行分區,而我想刪除舊錶時,他們年紀大不如說是30天(仍然有他們的存檔)。在上面的例子中,我們假設只有那兩個event_表。如果我刪除了2011_08_30,我希望能夠知道沒有任何內容指向文件路徑'2'並因此將其刪除,但知道一行仍指向文件路徑'1'並因此保留它。
任何想法,建議等?我相信我已閱讀的一些策略(至少對於postgres和觸發器)仍然存在競爭條件,即哪個線程首先在主鍵列上鎖定了其他相關問題。
謝謝!
@ Ben不知道爲什麼當刪除'events_2011_08_30'時,爲什麼還需要檢查'filepaths = 2'是否有其他值。當你使用'on delete no action'約束時,'filepaths'中的'2'不會被刪除(如果我正確理解你的需求)。 – DrColossos