내가 노력하고 내가이 오류 메시지가 얻을이 문장 실행 : 내가하지만 전에이 오류 메시지를받은오류 메시지 4145, 수준 15, 상태 1, 부울이 아닌 유형의 표현
Msg 4145, Level 15, State 1, Procedure tr_check_qty, Line 8
An expression of non-boolean type specified in a context where a condition is expected, near 'BEGIN'
을 이번에 그것을 고치는 법을 알아낼 수 없습니다. 나는 이것에 관해 생계를 꾸미기 위해 프로그램을하는 사람도 있었는데, 그가 지쳐서 바쁜 동안 그는 나의 통어론에 문제를 찾을 수 없었다. 도움!
CREATE TRIGGER tr_check_qty
ON order_details
FOR INSERT, UPDATE
AS
IF EXISTS ( SELECT COUNT(inserted.order_id)
FROM inserted
INNER JOIN products ON products.product_id=inserted.product_id
WHERE inserted.quantity>products.quantity_in_stock)
BEGIN
PRINT 'Insert/Update Not Allowed: quantity_in_stock less than units_on_order.'
ROLLBACK TRANSACTION
END;
GO
을하지만 지금은이 오류를 받고 있어요 :
CREATE TRIGGER tr_check_qty
ON order_details
FOR INSERT, UPDATE
AS
IF (SELECT quantity_in_stock
FROM products
WHERE quantity_in_stock >= units_on_order)
BEGIN
PRINT 'Insert/Update Not Allowed: quantity_in_stock less than units_on_order.'
ROLLBACK TRANSACTION
END;
GO
좋아, 지금이 문을 실행할 수 있습니다
Msg 245, Level 16, State 1, Line 1 Conversion failed when converting the varchar value 'quantity' to data type int.
나는 방아쇠 다음이 문을 excecute 할 때 :
UPDATE order_details
SET quantity=30
WHERE order_id=10044 AND product_id=7;
GO
처럼, 너무, 당신의 삽입 된 행을 참조 할 필요가 있다고 생각합니다. 그것이 무엇을 언급하고 있는지 불분명합니다. quantity_in_stock 및 unis_on_order의 데이터 유형은 무엇입니까? –
둘 다 int입니다. 이 명령문에서 영감을 얻은 원래의 질문은 order_details 테이블에서 tr_check_qty라는 INSERT 및 UPDATE 트리거를 작성하여 재고 수량이 주문한 단위보다 크거나 같은 제품의 주문 만 허용하는 것입니다. 트리거를 확인하려면 다음 쿼리를 실행하십시오. UPDATE order_details SET 수량 = 30 WHERE order_id = 10044 AND product_id = 7; GO – isolatedhowl