2009-10-27 7 views

답변

18

SQL을 작성하지 않고 트리거를 만들 수있는 마법 방법이 없습니다.
그러나 마이그레이션 중에 raw SQL을 실행할 수 있습니다.

def self.up 
    execute <<-SQL 
     CREATE TRIGGER my_trigger ... 
    SQL 
end 

그런 다음 마이그레이션에 따라 적절하게 트리거를 작성하거나 업데이트해야합니다.

: 방금 rails_on_pg을 발견했습니다. 마이그레이션에 도움이되는 부분이 있습니다.
PgSQL 이외의 다른 데이터베이스 서버에서는 작동하지 않습니다. 그러나 일부 MySQL 트리거 도우미를 작성하는 경우 좋은 리드가 될 수 있습니다.

+0

자원에 감사드립니다. 존재하지 않았다는 것을 알았습니다. :) –

+0

지금 바로'rails_on_pg'에 대한 참조를 제거하십시오 : 6 년 전 마지막 업데이트였습니다 :) – bbozo

9

hairtrigger이라는 보석이있어 좀 더 쉽고 휴대 성이 좋습니다 (mysql/sqlite/postgres). db- agnostic 방식으로 마이그레이션에서 트리거를 생성하거나 심지어 모델에서이를 선언 한 다음 rake db : generate_trigger_migration을 실행하여 마이그레이션을 수행 할 수 있습니다.

rake db:migrate 

: 우리는 우리가 sqlite가에 실패 sqlite3를 우리의 마이그레이션 명령을 사용하는 경우는, 개발 환경에서 작동하지 않을 수 있습니다 사용자 정의 SQL을 넣으면

+0

이 보석은 오래되었습니다 - Rails 2.3 - Rails 3.0.x. 그러나 아이디어는 훌륭합니다. –

+5

보석의 최신 버전을 지원하도록 업데이트되었습니다 –

+0

Jon 귀하의 보석은 환상적입니다. pg 인덱스를 생성하는 방법을 알고 있습니까? – zabumba

0

... 누군가 도움이 될 생각 db/scripts 아래에서 별도의 파일에 트리거 SQL을 생성하고 mysql cli에서 트리거를 실행하는 것이 더 유용하다는 것을 알게되었습니다. 그렇게하면 방아쇠가 바뀔 때 필요에 따라 다시 실행할 수 있습니다.

관련 문제