[SQL] Transaction, DELETE FROM vs TRUNCATE
4031 ワード
取引
トランザクションとは?
これらのSQL
トランザクションの例
トランザクションロジック
BEGIN;
A의 계좌로부터 인출;
B의 계좌로 입금;
END;
コミットモード:autocommit
-デフォルトでは、変更/削除/レコードの追加操作はすべてデータベースに直接書き込まれます.コミットと呼ぶ
-特定のタスクをトランザクションにマージする場合は、BEGINおよびEND(COMMIT)/ROLLBACK処理
-COMMITが呼び出されるまで、変更/削除/追加レコードはコミットされません.
SQLプログラムの送信
-デフォルトでは、すべてのSQL文がすぐにコミットされます(autocommit=True)
それを変えたいならBEGINEND; またはBEGIN;COMMIT(またはROLLBACK;)の使用
-可変パラメータautocommit
-autocommit=Trueの場合、デフォルトではPostgreSQLのコミットモードと同じです.
-autocommit=Falseはコネクタオブジェクトを表します.commit()と.トランザクションはrollback()関数で調整できます
-好みは
DELETE FROM vs TRUNCATE
DELETE FROM table_name(not DELETE*FROM)
- DELETE FROM raw_data.user_session_channel WHERE channel = 'Google'
TRUNCATE table_name
-TRANCATEはWHEREをサポートしていません
-TRANCATEはトランザクションをサポートしていません
SQLコードの使用
送信
%%sql
DROP TABLE IF EXISTS adhoc.keeyong_name_gender;
CREATE TABLE adhoc.keeyong_name_gender (
name varchar(32),
gender varchar(16)
);
INSERT INTO adhoc.keeyong_name_gender VALUES ('Ben', 'Male'), ('Maddie', 'Female');
%%sql
DROP TABLE IF EXISTS adhoc.keeyong_name_gender;
CREATE TABLE adhoc.keeyong_name_gender (
name varchar(32),
gender varchar(16)
);
INSERT INTO adhoc.keeyong_name_gender VALUES ('Ben', 'Male'), ('Maddie', 'Female');
conn = get_Redshift_connection(False)
cur = conn.cursor()
cur.execute("SELECT * FROM adhoc.keeyong_name_gender;")
res = cur.fetchall()
for r in res:
print(r)
cur.execute("COMMIT;")
rollback
conn = get_Redshift_connection(False)
cur = conn.cursor()
try:
cur.execute("DELETE FROM adhoc.keeyong_name_gender;")
cur.execute("INSERT INTO adhoc.keeyong_name_gender VALUES ('Claire', 'Female');")
conn.commit()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
conn.rollback()
finally :
conn.close()
conn = get_Redshift_connection(True)
cur = conn.cursor()
cur.execute("BEGIN;")
cur.execute("DELETE FROM adhoc.keeyong_name_gender;")
cur.execute("INSERT INTO adhoc.keeyong_name_gender VALUES ('Benjamin', 'Male');")
cur.execute("END;")
Reference
この問題について([SQL] Transaction, DELETE FROM vs TRUNCATE), 我々は、より多くの情報をここで見つけました https://velog.io/@peterpictor/SQL-Transaction-DELETE-FROM-vs-TRUNCATEテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol