truncate ->this resets the entire table, is there a way via truncate to reset particular records/check conditions.
For ex: i want to reset all the data and keep last 30 days inside the table.
Thanks.
4 | The short answer is no: MySQL does not allow you to add a But the good news is that you can (somewhat) work around this limitation. Simple, safe, clean but slow solution using First of all, if the table is small enough, simply use the
The Unfortunately, this will be very slow if your table is large... and since you are considering using the So here's one way to solve your problem using the Simple, fast, but unsafe solution using
Unfortunately, this solution is a bit unsafe if other processes are inserting records in the table at the same time:
Unfortunately, it is not possible to lock the table and truncate it. But we can (somehow) work around thatlimitation using Half-simple, fast, safe but noisy solution using
This should be completely safe and quite fast. The only problem is that other processes will see table Disclaimer: I am not a MySQL expert, so these solutions might actually be crappy. The only guarantee I can offer is that they work fine for me. If some expert can comment on these solutions, I would be grateful. | ||
출처 : http://stackoverflow.com/questions/3704834/truncate-with-condition
[기초] 임시테이블 @Table 만들기 (0) | 2013.10.30 |
---|---|
[MSSQL] 문자열 이나 이진 데이터 는 잘립니다. (0) | 2013.10.07 |
테이블 복사 쿼리 (0) | 2013.09.25 |
저장 프로시저 만들었음. (1) | 2013.09.10 |
[펌] 프로시저 만들기 (0) | 2013.08.29 |
TRUNCATE 문은 명시된 테이블의 모든 레코드들을 삭제한다.
내부적으로 테이블에 정의된 모든 인덱스와 제약 조건을 먼저 삭제한 후 레코드를 삭제하기 때문에, WHERE 조건이 없는 DELETE FROM table_name 문을 사용하는 것보다 빠르다. TRUNCATE 문을 사용해서 삭제하면 ON DELETE 트리거가 활성화되지 않는다.
대상 테이블에 PRIMARY KEY 제약 조건이 정의되어 있고, 이 PRIMARY KEY를 하나 이상의 FOREIGN KEY가 참조하고 있는 경우에는 FOREIGN KEY ACTION을 따른다. FOREIGN KEY의 ON DELETE 액션이 RESTRICT나 NO ACTION이면 TRUNCATE문은 에러를 반환하고, CASCADE이면 FOREIGN KEY도 함께 삭제한다. TRUNCATE 문은 해당 테이블의 AUTO INCREMENT 컬럼을 초기화하여, 다시 데이터가 입력되면 AUTO INCREMENT 컬럼의 초기값부터 생성된다.
TRUNCATE [ TABLE ] <table_name>
CREATE TABLE a_tbl(A INT AUTO_INCREMENT(3,10) PRIMARY KEY);
INSERT INTO a_tbl VALUES (NULL),(NULL),(NULL);
SELECT * FROM a_tbl;
=============
3
13
23
--AUTO_INCREMENT column value increases from the initial value after truncating the table
TRUNCATE TABLE a_tbl;
INSERT INTO a_tbl VALUES (NULL);
SELECT * FROM a_tbl;
=============
3
[펌] UNION과 UNION ALL 의 차이 및 주의 사항 (0) | 2014.02.28 |
---|---|
[펌] 트랜잭션 로그 백업(Transaction Log Backup)에 관하여 (0) | 2013.11.05 |
CRUD 의 중요도? (0) | 2013.08.02 |
DECODE, RANK()OVER(), UNION/UNION ALL (1) | 2013.08.02 |
DATA BASE _ 기초 (0) | 2013.07.10 |