Mysql 删除表的内容
如何删除表中的内容。。如果一个表中有100行,并且我想在不删除表的情况下删除所有行,我将如何使用WHERE子句:Mysql 删除表的内容,mysql,sql,postgresql,Mysql,Sql,Postgresql,如何删除表中的内容。。如果一个表中有100行,并且我想在不删除表的情况下删除所有行,我将如何使用WHERE子句: DELETE FROM tablename 如果有其他表通过外键引用引用它,则此操作可能会失败。也可以使用TRUNCATE (感谢PostgreSQL链接到rfusca) 给出的两个答案都是正确的 两者之间的主要区别 TRUNCATE TABLE tablename 及 TRUNCATE会将自动增量值重置回1。如果事情必须是唯一的,则可能会有所不同。您也可以使用Truncate
DELETE FROM tablename
如果有其他表通过外键引用引用它,则此操作可能会失败。也可以使用TRUNCATE (感谢PostgreSQL链接到rfusca)
给出的两个答案都是正确的 两者之间的主要区别
TRUNCATE TABLE tablename
及
TRUNCATE
会将自动增量
值重置回1。如果事情必须是唯一的,则可能会有所不同。您也可以使用Truncate,它比DELETE快,但Truncate在表锁或事务下不起作用
看看
有两个答案,但它们是不同的。TRUNCATE是一个DDL语句。它不会执行完整性检查或在删除时运行触发器。@Benoit并且它还会发出一个
commit
语句来结束当前的transaction@XaviLópez不在PostgreSQL中(问题被标记)。在PostgreSQL中,截断是事务性的。“对于表中的数据,截断是事务安全的:如果周围的事务没有提交,截断将安全回滚。”@rfusca感谢您提供此细节,我不知道:)问题也标记为PostgreSQL。截断在postgres中是事务性的。问题也被标记为PostgreSQL。Postgres没有那种疯狂的自动增量问题。PostgreSQL不会重置任何序列,除非您使用重新启动标识请求它。@Scorpion:在PostgreSQL中,对于其他表中的链接行(通过外键约束),您可以像这样级联删除从tablename级联删除
。但是要非常小心!您可能希望也可能不希望删除相关行。请注意,您始终可以在事务中删除,以查看是否丢失了不希望删除的行。在pgsql中,除创建/删除数据库/表空间外,所有内容都是可事务的。
TRUNCATE TABLE tablename
DELETE FROM tablename