database.sarang.net
UserID
Passwd
Database
DBMS
ㆍMySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MySQL Q&A 21486 게시물 읽기
No. 21486
MySQL의 FOREIGN KEY?
작성자
최현수(Hyri)
작성일
2004-04-09 23:06
조회수
2,070

CREATE TABLE table_A (
A INTEGER PRIMARY KEY);

이런 테이블이 있고

CREATE TABLE table_B (
B INTEGER PRIMARY KEY,
BA INTEGER,
FOREIGN KEY(BA) REFERENCES table_A(A));

이렇게 하면

table_B.BA는 A를 참조하는 외래키가 되는거 맞죠?

그러면 table_A에 값이 없는 걸 넣으면
오류가 발생해야 하지 않나요?

저렇게 두개를 만들고
두 테이블 모두 비어있을 경우

table_B에 먼저 자료를 넣는다면 (즉, table_A에 참조할 A값이 없을 경우)
에러가 나야 맞는것 아닌가요?

그런데 왜 에러가 나지 않을까요?^^; 그냥 슥 들어가버리네요;;

이 글에 대한 댓글이 총 2건 있습니다.

문법 자체가  맞는지는 모르겠지만

 

FOREIGN KEY를 설정하면 말씀처럼

 

부모없는 자식서류를  넣어본들 주거두  들어가지

 

않습니다.

 

제경우 4.016 버전에서  innodb(테이블 형식)로 하면 잘 되던데요

 

제가  초보라서 ...

 

노민상(쭈쭈아빠)님이 2004-04-10 07:19에 작성한 댓글입니다.
이 댓글은 2004-04-10 07:33에 마지막으로 수정되었습니다.

ㅎㅎ

저도 예전에 같은 걸로 헤맨적이 있답니다. ^^

MySQL은 MyISAM(기본값)을 비롯해서 여러 가지 테이블 타입을 지원한답니다. 현재 4.0.X 버전을 기준으로 할 때 Foreign Key는 InnoDB 테이블 타입에서만 지원합니다. (참고로... 5.X 버전에서는 MyISAM도 지원할 예정이라고 합니다.)

 

테이블타입을 지정하시려면... CREATE 끝에

 type='테이블타입'

를 지정하시면 됩니다.

 

CREATE TABLE tbl_support_foreign_key

(

...

) type=InnoDB;

 

라고 하세요 ^^

 

아... 그리고 InnoDB의 성능에 대해서 크게 우려하실 필요는 없을 것 같습니다. 여기 올라온 사례 분석을 살펴보면... MyISAM 방식과 비료해서 크게 저하되지는 않는 것 같습니다.

 

아... 그리고 또 한가지... transaction을 사용하려면 역시 innodb 방식으로 테이블을 생성하셔야 합니다.

 

그런 이만 ^^

 

키포스(kipos)님이 2004-04-10 10:35에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
21489Mysql의 외래키와 InnoDB T_T [2]
최현수
2004-04-10
2226
21488정재익님 DOS와 MySQL 연동에 대해 질문했던 사람입니다. [2]
최원용
2004-04-10
629
21487INT 형의 사이즈에 관해서 질문 드립니다 [2]
사이즈궁금
2004-04-10
1006
21486MySQL의 FOREIGN KEY? [2]
최현수
2004-04-09
2070
21485MySQL 풀텍스트 서치에 관해
유창구
2004-04-09
810
21484체크박스의 검색 및 디비 설계 부분 [1]
powersum
2004-04-09
683
21483[질문]MySql을 한 서버에 두개 설치하려고 합니다. [4]
전득진
2004-04-08
1581
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.024초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다