5 回答

TA貢獻(xiàn)1982條經(jīng)驗(yàn) 獲得超2個(gè)贊
boolean active一種方法是向您的客戶表添加一列
create table Customers (
firstname varchar(20),
secondname varchar(20),
active Boolean default true
);
然后當(dāng)您選擇記錄時(shí)
select * from Customers where active = true;
然后,您可以將 active 設(shè)置為 false,而不是從客戶表中刪除條目

TA貢獻(xiàn)1860條經(jīng)驗(yàn) 獲得超9個(gè)贊
使用“軟刪除”。這意味著您實(shí)際上不會(huì)刪除任何內(nèi)容,而是在每一行上都有一個(gè)標(biāo)志,您可以切換以顯示客戶不活躍。然后,您可以擁有一個(gè)僅顯示與取消刪除無(wú)關(guān)的代碼可以使用的未刪除客戶的視圖。

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超13個(gè)贊
一種方法是不實(shí)際刪除客戶并添加額外的狀態(tài)列。在業(yè)務(wù)層中,您將能夠顯示狀態(tài)為 != DELETED 的所有用戶。
OBS:如果您確實(shí)需要從數(shù)據(jù)庫(kù)中刪除它們,您可以創(chuàng)建一個(gè) cron 來(lái)掃描所有狀態(tài)為已刪除的客戶,并在 x 天后刪除它們。

TA貢獻(xiàn)1818條經(jīng)驗(yàn) 獲得超8個(gè)贊
我還想補(bǔ)充一點(diǎn),您可以考慮使用Hibernate Envers。
Envers 將創(chuàng)建新表來(lái)記錄審核表的更改狀態(tài)。

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個(gè)贊
您應(yīng)該進(jìn)行數(shù)據(jù)庫(kù)備份。
備份是您的“第一道防線” - 防止意外刪除......以及防止任何其他可能發(fā)生的情況(例如硬盤(pán)崩潰。或流星墜毀。)。
另一種方法是將[觸發(fā)器]分配給任何刪除(或者就此而言,也分配給“插入”和“更新”語(yǔ)句)。您可以阻止刪除(如果您愿意),并且您將獲得誰(shuí)嘗試刪除的記錄。
最后,最好的方法可能是根本不刪除:只需創(chuàng)建一個(gè)新的“狀態(tài)”列。將初始值設(shè)置為“ACTIVE”,將“deleted”值設(shè)置為“DELETED”。
添加回答
舉報(bào)