2010-03-24 8 views

답변

1

information_schema의 테이블은 실제로보기입니다. 이것은 here입니다.

MySQL에 따르면 임시 테이블이나 뷰에서 트리거를 만들 수 없습니다. 이에 대한 설명은 this page을 참조하십시오.

그래서 나는 그 정보에 근거하여 no라고 말할 것입니다. 내가 틀렸다면 누군가가 나를 교정 할 것이라고 확신합니다.

당신이 묻는 것과 비슷한 토론이 있습니다 here.

달성하려는 작업은 무엇입니까?

+0

내가 HTTP 여기에서 언급 한 작업을 수행 할 노력하고 있어요 : // 포럼 .mysql.com/read.php? 99,360049,360049 # msg-360049 약간의 빛을 던지십시오. –

+0

질문을 거기에서 보았습니다. 자신의 시나리오를 올바르게 이해했다면 TRIGGER의 정의에 특별히 언급 된 열의 이름을 변경 한 사실을 동적으로 조정할 수 있습니다. 물론 자동으로 수행하지는 않으며 트리거가 이전 열 이름을 찾고 이름이 바뀌었기 때문에 업데이트가 실패합니다. 제 조언은 일을 단순하게 유지하고 테이블의 열 이름을 수정해야하는 경우 트리거의 정의를 수정하십시오. 나보다 똑똑한 누군가는 다른 접근법을 가지고있을 수도 있습니다. 행운을 빕니다! – itsmatt

0

누군가가 더 똑똑합니다. - 농담하지만 나는 똑같은 일을하려했지만 유일한 명백한 대답은 불행히도 추상화 레이어를 추가하는 것입니다. >

-

을 :

는 간단히 ("표를 ALTER ....")이 같은 다른 언어로 (직접 작성) 높은 수준의 함수를 호출 할 필요가 대신 SQL의, 넣어

modifytable($old_table_structure,$new_table_structure){ 
alter_table_base_table($old_table_structure,$new_table_structure); 
alter_table_history_table($old_table_structure,$new_table_structure); //just guessing that's what I'm doing with it so thought it was the same for you 
alter_history_triggers($old_table_structure,$new_table_structure); 
} 

DBMS에서이 작업을 수행하고 싶었지만 실제로는 information_schema가 그런 의미가 아닙니다.

물론, 당신이 폭발하지 않도록하기 위해, 하나의 트랜잭션 내에서 모든 것을해야 할 것이다

)

관련 문제