mysql逻辑删除的问题_数据库表涉及-逻辑删除
對于只進行邏輯刪除的表,如
CREATE TABLE `pics` (
`pid` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`aid` bigint(20) unsigned NOT NULL,
`pic_url` varchar(255) NOT NULL,
`is_cover` tinyint(1) default 0,
`is_local` tinyint(1) default 1,
`type` int(10) unsigned default 0,
`description` text,
`ext` text,
`uid` bigint(20) unsigned NOT NULL,
`uip` int(10) unsigned default 0,
`create_time` int(10) unsigned default 0,
`update_time` int(10) unsigned default 0,
`is_audited` tinyint(1) default 0,
`is_deleted` tinyint(1) default 0,
PRIMARY KEY (`pid`),
KEY `aid` (`aid`,`create_time`),
KEY `idx_user_time_del` (`uid`,`create_time`,`is_deleted`),
KEY `idx_user_uptime_del` (`uid`,`update_time`,`is_deleted`),
KEY `idx_time_del` (`create_time`,`is_deleted`),
KEY `idx_uptime_del` (`update_time`,`is_deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
建議
pics表中只存儲未刪除的數據,不需要is_delete字段
另建一張表存儲刪除的數據,如pic_d
用戶刪除的話就把記錄從pics中刪除,插入到pic_d中,myisam表引擎即可,好處不言而喻
CREATE TABLE `pics_d` (
`pid` bigint(20) ,
`aid` bigint(20) unsigned NOT NULL,
`pic_url` varchar(255) NOT NULL,
`is_cover` tinyint(1) default 0,
`is_local` tinyint(1) default 1,
`type` int(10) unsigned default 0,
`description` text,
`ext` text,
`uid` bigint(20) unsigned NOT NULL,
`uip` int(10) unsigned default 0,
`create_time` int(10) unsigned default 0,
`update_time` int(10) unsigned default 0,
`is_audited` tinyint(1) default 0,
`is_deleted` tinyint(1) default 0
) ENGINE=Myisam DEFAULT CHARSET=utf8;
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的mysql逻辑删除的问题_数据库表涉及-逻辑删除的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql 创建job_MySQL 索引
- 下一篇: python ddt mysql_Pyt