2012-01-18 2 views
4

다음 트리거를 사용하여 mysql 5.0.7의 다른 데이터베이스에서 사용자 테이블을 업데이트하십시오. 트리거 생성시 오류는 발생하지 않지만 첫 번째 데이터베이스의 사용자 테이블을 업데이트 할 때 트리거는 다음과 같습니다. 작동 안함. 어떤 제안?트리거를 사용하여 다른 데이터베이스의 테이블을 업데이트

DELIMITER $$   
DROP TRIGGER IF EXISTS after_update_user; 

CREATE TRIGGER after_update_user; 

AFTER UPDATE ON db_test.user FOR EACH ROW; 
BEGIN 
    UPDATE TABLE db_testplus.user; 
    SET name = NEW.name; 

    WHERE id = NEW.id; 
END 

$$ 
DELIMITER ; 

는 또한 세미콜론없이이 코드를 사용하지만 여전히

delimiter | 
DROP TRIGGER IF EXISTS after_update_user| 
CREATE TRIGGER after_update_user AFTER UPDATE ON db_test.user 
    FOR EACH ROW BEGIN 
    UPDATE db_testplus.user SET name = NEW.name WHERE id = NEW.id; 
    END; 
| 
delimiter ; 
+1

"작동하지 않는다"는 것을 의미합니까? – MatBailie

+0

두 번째 데이터베이스의 테이블이 첫 번째 테이블의 업데이트 후 업데이트되지 않습니다. – Abhishek

+0

장소의 세미콜론은 무엇입니까? –

답변

2

근무 같은

DELIMITER $$   
DROP TRIGGER IF EXISTS after_update_user 

CREATE TRIGGER after_update_user 

AFTER UPDATE ON db_test.user FOR EACH ROW 
BEGIN 
    UPDATE TABLE db_testplus.user 
    SET name = NEW.name 

    WHERE id = NEW.id 
END; 

$$ 
DELIMITER ; 

마지막 코드는 아래를 확인하시기 바랍니다 수

AFTER UPDATE ON db_test.user FOR EACH ROW 
BEGIN 
    UPDATE TABLE db_testplus.user 
    SET name = NEW.name 

    WHERE id = NEW.id 
END; 
+0

대신이 코드를 사용했지만 작동하지 않았습니다 – Abhishek

+0

'END' 다음에';'사용 했습니까?'WHERE id = NEW.id' 뒤에 사용 했습니까? 당신의 업데이트가'WHERE id = NEW.id' 후에 사용하고 있다고 말하면서 ... 내가 말한 것처럼 END 뒤에';'를 추가해보십시오 ... –

+0

예 예 : 아무런 영향도 없었습니다 – Abhishek

0

이 시도;

CREATE TRIGGER after_update_user 

AFTER UPDATE ON db_test.user FOR EACH ROW 
    UPDATE TABLE db_testplus.user 
    SET name = NEW.name 
    WHERE id = NEW.id; 

시작일 키워드를 생략하면 나에게 효과적입니다.

관련 문제