ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 07/14 데이터베이스 기초 2
    데이터베이스 2021. 7. 14. 15:36

    select한 것을 보는 가상 테이블

     

    create view view_products as
    select name, price, amount
    from products;

    SELECT * FROM exam11.view_products;

     

    이너조인

     

    create view view_purchases as
    select purchases.member_email, products.name, purchases.date
    from products
    inner join purchases
    on products.id = purchases.product_id;
    select * from view_purchases;

     

    트랜잭션

    저장 엔진별 트랜젝션 지원 여부

    오토커밋 여부 확인

    SELECT @@AUTOCOMMIT;

    SET AUTOCOMMIT = TRUE; //오토커밋 설정
    SET AUTOCOMMIT = FALSE; //오토커밋 설정해제

     

    트랜잭션을 사용할때 오토커밋을 꺼야한다

     

    커밋을 지원하지 않을 경우 자동으로 오토커밋이 된다

     

     

    오토 커밋을 해제했는데 계속 오토커밋이 될 경우 워크밴치에서 오토커밋이 설정되어 있을 수 있다

     

    오토 커밋 체크 해제

     

    트랜잭션 시작

    세션 1

    start transaction;
    insert into members values('jang@gmail.com', '1234');
    select * from members;

    세션 1 members테이블

     

    세션 2

    세션 2 members테이블

     

    트랜잭션 시작 후 커밋하지 않으면 실제로 데이터가 들어가지 않은 상태이다

     

    세션 1

    commit;

     

    세션 2

     

     

     

     

    Lock확인 1

    세이프모드 체크 해제

    재접속

     

     

    test테이블 만들기

    start transaction;
    delete from test;

     

    Lock확인 2

    세션 1

    insert into test (name) values ('kk');

     

    start transaction;
    update test set name='hong' where id = 1;

    세션 2

    세션 1

    트랙잭션 후에는 반드시 커밋 또는 롤백을 해주어야 한다

    rollback;

     

     

    트랜잭션으로 롤백 할 수 없는 경우

    DROP명령은 롤백할 수 없음

     

     

    교착상태

    트랜잭션 A와 트랜잭션B가 서로 자원을 점유하고 놓아주지 않는 상황

     

     

    저장함수

    반환값이 있으면 저장함수, 없으면 프로시저

     

     

    트리거

    로그테이블 생성

     

    트리거 선언

    delimiter //
    create trigger logDateInsertAfter
    	after insert on products for each row
    		begin
    			insert into log_products (product_id) values (new.id);
    		end //
    delimiter ;

     

    데이터 추가

    insert into products values (uuid(), 100, '바카스', 800, 3);
    call insert_product (100, '커피우유', 1200, 1);

     

    로그 테이블 확인

Designed by Tistory.