2014-11-29 3 views
7

레일 4.2 새로 추가하고 같은 (마이그레이션에) 외래 키를 제거 지원 이 :레일 4.2 외래 키

add_column :articles, :author_id, :integer 

해명 해 주셔서 감사합니다.

ALTER TABLE "articles" ADD CONSTRAINT articles_author_id_fk FOREIGN KEY ("author_id") REFERENCES "authors" ("id"); 

이 있지만 :

add_column :articles, :author_id, :integer 

생성 것이다

add_foreign_key :articles, :authors 

가 실제로 발생한다 :

답변

9

차이점은 라인

ALTER TABLE "articles" ADD COLUMN author_id INT(11); 

add_foreign_keyforeign key 제약 조건을 추가하기 때문에 add_column은 제약 조건이 아닌 열을 추가하기 때문에 둘 다 다릅니다.

+0

감사합니다. 그래서'''''add_foreign_key'''를 사용하면 외래 키를 추가하기 때문에 데이터베이스 성능이 좋아질 것이라고 결론 지은 것은 맞습니까? – TomDogg

+1

기술적으로 데이터베이스가 모든 업데이트/삽입에 대해이 제약 조건을 확인하도록 강제하기 때문에'데이터베이스 성능 '이 감소합니다. 그러나 '참조 무결성'을 추가하여 데이터가 "의미가 있음"을 보장하고 데이터의 일관성이 없거나 고아가되지 않도록합니다. – mmcrae