2012-06-07 5 views
-1

작은 질문이 있습니다. 나는이 개 테이블이 :삭제시 SQL 트리거

CREATE TABLE park(parkcode CHAR(5), name CHAR(15)); 

CREATE TABLE ticket(date_purchase_ticket TIMESTAMP, parkcode CHAR(5)); 

내가 뭘하려고 오전 내가 테이블 park에서 행을 삭제할 때, 트리거가 먼저 특정 날짜 이후에 어떤 구매가 거기 있는지 보이는 것을 트리거를 만드는 것입니다 . 특정 날짜 이후에 구매 항목이없는 경우에만 park 테이블에서 해당 행을 삭제할 수 있습니다.

+1

어떤 데이터베이스 시스템이고 어떤 버전입니까 ?? ** SQL **은 데이터베이스 제품이 아닌 많은 데이터베이스 시스템에서 사용되는 언어 인 구조화 된 쿼리 언어입니다. 이런 것들은 벤더에 따라 다르므로 사용중인 데이터베이스 시스템을 알아야합니다 .... –

+0

사용중인 RDBMS 및 버전은 무엇입니까? – Lamak

+1

트리거 코드를 게시하고 문제를 설명하십시오. – Quassnoi

답변

0

트리거가있는 행 삭제를 방지 할 수 없습니다.

1

park에서 행을 삭제할 때 호출 할 수있는 프로 시저를 만드는 것에 대해 생각해 봐야합니다. 의 라인을 따라

뭔가 :

DELIMITER // 

CREATE PROCEDURE DeleteIfNoPurchases (IN code CHAR(5), 
             IN date TIMESTAMP) 
BEGIN 
    IF (SELECT MAX(date_purchase_ticket) 
     FROM ticket 
     WHERE parkcode = code) < date THEN 
     DELETE FROM park WHERE parkcode = code; 
    END IF; 
END// 

DELIMITER ; 

는 그런 다음 삭제하려는 코드와 당신에 대해 테스트 할 타임 스탬프를 호출 할 수 있습니다.