이것은 아마도 어리석은 질문이지만 내 꼬리를 쫓고 있습니다. 주문 수량은 다음 재고 수량을 초과 할 경우SQL : 2 개의 테이블을 참조하는 트리거
주문 테이블과 제품 테이블은 ...
아마, 3 권의 책을 확인이 작업을 수행 할 수있는 방법을 찾을 수 없습니다, 50 개 핵심 단어를 검색 좀했습니다. 이것은 내가 시도한 것이지 내가 시도한 것의 전제입니다.
CREATE TRIGGER tr_check_qty
ON order_details
FOR INSERT,UPDATE
AS
IF (SELECT quantity FROM inserted) > products.quantity_in_stock
BEGIN
PRINT 'Orderded quantity cannot exceed quantity in stock'
ROLLBACK TRANSACTION
END
어디에서 가입 할 수 있습니까? 나는 20 가지 다른 방법을 시도했다. 앞에 변수를 선언하려고 시도했다. 나는 이것을 할 수있는 방법을 찾을 수 없다.
건배.
MSDN에는 정확히 필요한 것이 있습니다. 예제 C를 참조하십시오. http://msdn.microsoft.com/en-us/library/aa258254(v=sql.80).aspx –
트리거 대신 쉬운 저장 프로 시저를 고려하십시오. 저장 프로 시저를 사용하여 주문 행을 업데이트하는 경우 먼저 충분한 재고가 있는지 확인하기 위해 수정할 수 있습니다. – Andomar
동시에 여러 테이블에 하나 이상의 레코드를 삽입 할 수 있으므로 다른 제품에 영향을 미칠 수도 있습니다. 귀하의 방아쇠 접근 방식은 그 가능성을 반영하지 않지만 반드시 그러해야합니다. '삽입 된'또는 '삭제 된'및 *가 설정된 작업이 아닌 모든 트리거는 치명적인 결함이 있습니다. 트리거를 디자인하기 전에 누군가가 20 개의 레코드를 삽입 할 때 어떤 일이 일어나야하는지 정의해야합니다. 그 중 일부는 괜찮으며 일부는 그렇지 않습니다. (단일 레코드 삽입 만 허용하려면 저장 프로 시저를 사용할 수 있습니다.) – Tomalak