본문 바로가기
my_lesson/_SQL

SQL - MySQL Workbench 설정 및 사용법

by boolean 2017. 2. 28.
728x90

SQL - MySQL Workbench 설정 및 사용법

다이어그랭 작성

File > New Model >Add Diagram

SQL문으로 변환


File > Export > Forward Engineer SQL Create.....


외부 서버 연결

Database > connect to Database 



ERROR


03:09:48 Apply changes to new_stock Error 1452: Cannot add or update a child row: a foreign key constraint fails (`test`.`#sql-560_11`, CONSTRAINT `ftest` FOREIGN KEY (`test`) REFERENCES `kse` (`kseid`) ON DELETE NO ACTION ON UPDATE NO ACTION) SQL Statement:  ALTER TABLE `test`.`new_stock`  ADD CONSTRAINT `ftest`   FOREIGN KEY (`test`)   REFERENCES `test`.`kse` (`kseid`)   ON DELETE NO ACTION   ON UPDATE NO ACTION  

새로운 빈 속성을 생성해서 진행하면 해결 된다
속석값이 이미 들어있는 필드에 외부키를 추가 하려해서 생기는 오류이다

Create a new empty property and proceed.

An error that occurs when you try to add a foreign key to a field that already contains an attribute value

******************************************************************************
INNODB에서의 FOREIGN KEY는 
  1. 반드시 아버지와 자식은 INNODB 여야 한다.
  2. 아들이 참조하는 키는 아버지가 가지고 있는 키의 자료형과 동일하게 사용해야 한다.
  3. 아버지가 UNIQUE한 값을 갖는 키들만, 아들이 가져가서 참조할 수 있다.

******************************************************************************



 Foreign key 옵션

 

    * 여기서 햇갈리지 말아야 할 것,!

       만약 A 테이블이 부모 테이블이고 B 테이블이 자식 테이블이라 가정하고, FK에 해당하는 필드가 A_NO와 B_NO 라

       할 때, A_NO와 B_NO의 값이 같은 데이터들에 대하여 아래에서 말하는것을 잊지말자.

     

   1) On Delete

 Cascade : 부모 데이터 삭제시 자식 데이터도 동시 삭제.

 Set null : 부모 데이터 삭제시 해당되는 자식 데이터의 Columm은  Null 로 처리.

 Set default : 부모 데이터 삭제시 자식 데이터의 Columm은 기본 값(Default) 으로 Update.

 Restrict : 자식 테이블에 데이터가 남아 있는 경우 부모 테이블의 데이터는 삭제 불가.

 No Action :  

 

  2) On Update

Cascade : 부모 데이터 수정시 자식 데이터도 동시 수정.

Set null : 부모 데이터 수정시 해당되는 자식 데이터의 Columm은 Null 로 처리.

Set default : 부모 데이터 수정시 자식 데이터의 Columm은 기본 값(Default) 으로 Update.

Restrict : 자식 테이블에 데이터가 남아 있는 경우 부모 테이블의 데이터는 수정 불가.

No Action :

  

   * No Action 속성은 설명을 찾기는 하였으나 무슨 말인지 모르겠다. 좀 더 공부해보고 적어야겠다;;;

 

NO ACTION
참조되는 측 관계변수에 대해 UPDATE, DELETE 가 실행됩니다. DBMS에서 SQL문장의 실행 종료시에 참조 정합성을 만족하는지 검사합니다. RESTRICT와 차이점은 트리거 또는 SQL문장의 시멘틱스 자체가 외래키의 제약을 채울것이라는 데에 있습니다. 이때는 SQL 문장 실행이 성공합니다. 외래 키의 제약이 만족되지 않은 경우에는 SQL문장이 실패한다.

 

 

   * On Delete 나 On Update 가 지정되어 있지 않으면 NO ACTION 이 기본 값으로 설정된다.

   * MySQL 에서는 Set Default 를 지원하지 않는다.

'my_lesson > _SQL' 카테고리의 다른 글

SQL - ALTER TABLE  (3) 2016.02.26
SQL - 가장 많이 사용되는 SQL명령어  (0) 2016.02.25
SQL - SELECT  (0) 2016.02.25
SQL - SELECT DISTINCT  (0) 2016.02.25
SQL - WHERE  (0) 2016.02.25

댓글