MySQL은 다른 프로그램이나 명령 줄에서 사용자가 수행하는 삽입과 같은 데이터베이스에서 변경이 발생하면 알림을받을 수 있도록 C에서 콜백을 허용합니까?MySQL이 C에서 콜백을 허용하여 변경이 발생하면 알림을받을 수 있습니까?
mysqlclient는 실행중인 스레드가 아니기 때문에 mysqlclient가 라이브러리가 아니기 때문에 추측하고 있습니다. 그러나 나는 묻는다.
MySQL은 다른 프로그램이나 명령 줄에서 사용자가 수행하는 삽입과 같은 데이터베이스에서 변경이 발생하면 알림을받을 수 있도록 C에서 콜백을 허용합니까?MySQL이 C에서 콜백을 허용하여 변경이 발생하면 알림을받을 수 있습니까?
mysqlclient는 실행중인 스레드가 아니기 때문에 mysqlclient가 라이브러리가 아니기 때문에 추측하고 있습니다. 그러나 나는 묻는다.
MySQL의 트리거를 사용하면 쿼리를 삽입/업데이트/삭제하고 추가 작업을 수행 할 수 있습니다. 예를 들어, 별도의 테이블에 로그 할 수 있습니다.
그럼 당신은 사용자 정의 함수에 트리거를 첨부하고 그 다음 코드를 통지 할 외부 프로그램을 호출 할 수 ..
http://dev.mysql.com/doc/refman/5.0/en/faqs-triggers.html#qandaitem-B-5-1-10
은과 같이 트리거를 만듭니다.
DELIMITER $$
CREATE TRIGGER ad_mytable_each AFTER DELETE ON MyTable FOR EACH ROW
BEGIN
#write code that trigger After delete (hence the "ad_" prefix)
#For table MyTable (The _MyTable_ middle)
#On each row that gets inserted (_each suffix)
#
#You can see the old delete values by accesing the "old" virtual table.
INSERT INTO log VALUES (old.id, 'MyTable', old.field1, old.field2, now());
END$$
DELIMITER ;
는 INSERT
, DELETE
, UPDATE
에 대한 트리거가 있습니다 그리고 그들은 BEFORE
또는 AFTER
작업을 발사 할 수 있습니다.
트리거는 BEFORE
트리거를 통해 오류를 강제로 취소 할 수 있습니다.
CREATE TRIGGER bd_mytable_each BEFORE DELETE ON MyTable FOR EACH ROW
BEGIN
#write code that trigger Before delete (hence the "db_" prefix)
declare DoError Boolean;
SET DoError = 0;
IF old.id = 1 THEN SET DoError = 1; END IF;
IF (DoError = 1) THEN SELECT * FROM Table_that_does_not_exist_to_force_error;
#seriously this example is in the manual.
END$$
DELIMITER ;
이 기록의 삭제를 방지 할 수 UPDATE 트리거도 업데이트 된 값을 변경하기 전에 1.
를했다.
CREATE TRIGGER bu_mytable_each BEFORE UPDATE ON MyTable FOR EACH ROW
BEGIN
IF new.text = 'Doon sucks' THEN SET new.text = 'Doon rules';
END$$
DELIMITER ;
희망 하시겠습니까?
코드에서 @Doon 참조에 +1을 추가 할 수 있으면 좋겠습니다. –