์ค๋ผํด์์ ํ ์ด๋ธ์ ์๋ก์ด PRIMARY KEY๋ฅผ ์ถ๊ฐํ๊ณ ์ด๋ฅผ FK๋ก ๋ง๋ค์ด์ฃผ๊ณ ์ถ์๋ค.
๊ทธ๋ฌ๋ค๊ฐ ๊ทธ๋ง ORA-02270 ์๋ฌ๋ฅผ ๋ง๋๊ฒ ๋์๋ค.
๋ง๋๊ฒ ๋ ์ํฉ์ ์ด๋ ๋ค.
ํ ์ด๋ธ A์ B๊ฐ ์๋ค.
ํ ์ด๋ธ A๋ a๋ผ๋ PK๊ฐ ์๊ณ ํ ์ด๋ธ B๋ (a, b)๋ฅผ ๋ณตํฉPK๋ก ๊ฐ์ง๊ณ ์์๋ค.
์, ์ฌ๊ธฐ์ A์ Bํ ์ด๋ธ์ ์ปฌ๋ผc๋ฅผ ์ถ๊ฐํ๊ณ ๋ณตํฉPK๋ก ๋ง๋ค์ด์ฃผ๋ คํ๋ค.
์ฆ, A์ PK๋ (a, c), ๊ทธ๋ฆฌ๊ณ B์ PK๋ (a, b, c)๊ฐ ๋๋๊ฒ์ด๋ค. ๊ทธ๋ฆฌ๊ณ B์ a, c๋ FK๋ก A์ a, c๋ฅผ ์ฐธ์กฐํด์ผํ๋ค.
์ด๋ฅผ ํ๊ธฐ์ํด์ ์๊ฐํ๋ ์์๋ ์๋์ ๊ฐ๋ค.
1. ํ ์ด๋ธ A, B์ PK๋ฅผ DROPํ๋ค.
2. ํ ์ด๋ธ A, B์ ์ปฌ๋ผc๋ฅผ ์ถ๊ฐํ๋ค.
3. ํ ์ด๋ธ A์ PK๋ก (a, c)๋ฅผ ์ ์ธํ๋ค.
3. ํ ์ด๋ธ B์ a๋ฅผ FK๋ก ์ ์ธํ๋ฉด์ A์ a๋ฅผ ์ฐธ์กฐํ๋๋ก ํ๋ค.
- alter table B add foreign key (a) references A(a);
4. ํ ์ด๋ธ B์ c๋ฅผ FK๋ก ์ ์ธํ๋ฉด์ A์ c๋ฅผ ์ฐธ์กฐํ๋๋ก ํ๋ค.
- alter table B add foreign key (c) references A(c);
5. ํ ์ด๋ธ B์ PK๋ก (a, b, c)๋ฅผ ์ ์ธํ๋ค.
ํ์ง๋ง 3๋ฒ์์ 02270 ์๋ฌ๋ฅผ ๋ง๋๊ฒ ๋์๋ค.
์ด ์๋ฌ๋ UNIQUE KEY๋ PK๊ฐ ์๋๊ฒ์ ์ฐธ์กฐํ๋ ค๊ณ ํ๊ธฐ ๋๋ฌธ์ ๋ฐ์ํ๋ ์๋ฌ์ด๋ค.
๊ทธ๋์ ์๊ฐํด๋ณด๋ ํ ์ด๋ธ A์ PK๋ a๋ c๊ฐ ์๋ (a, c)์ธ ๊ฒ์ด๋ค.
ํ์ฌ 3, 4๋ฒ ๊ณผ์ ์ ๋ฌถ์ด์ ํ ์ด๋ธ B์ FK๋ก B์ (a, c)๊ฐ A์ (a, c)๋ฅผ ์ฐธ์กฐํ๋๋ก ์ค์ ํ์๋๋ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์๋ค.
- alter table B add foreign key (a, c) references A(a, c);
'๐ป Programming > Oracle 11g' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
ORA-00917: ๋๋ฝ๋ ์ฝค๋ง (0) | 2015.04.20 |
---|---|
ํ ์ด๋ธ ์ปฌ๋ผ ์์ ๋ฐ๊พธ๊ธฐ ( Changing Column Order ) (0) | 2015.04.20 |
[SQL] Truncate vs Drop vs Delete (0) | 2015.04.20 |
[SQL] ๊ธฐ์กด ํ ์ด๋ธ์ ์ปฌ๋ผ์ not null ์ ์ฝ ์ถ๊ฐํ๊ธฐ (0) | 2015.04.20 |
[SQL] ํ๋ฒ์ ์ฌ๋ฌ record(๋ฐ์ดํ) ์ฝ์ ํ๊ธฐ (0) | 2015.04.20 |