このステートメントを実行しようとすると、次のエラーメッセージが表示されます。
メッセージ4145、レベル15、状態1、プロシージャtr_check_qty、8行目
'BEGIN'の近くで、条件が予期されるコンテキストで指定された非ブール型の式
以前にこのエラーメッセージを受け取りましたが、今回は修正方法がわかりません。私はこれを生き生きとプログラムする人さえいました、そして彼が疲れ果てて忙しい間、彼は私の構文の問題を見つけることができませんでした。ヘルプ!
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
さて、私は今このステートメントを実行することができます:
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
しかし今、私はこのエラーを受け取っています:
メッセージ245、レベル16、状態1、行1 varchar値'quantity'をデータ型intに変換するときに、変換に失敗しました。
トリガーに続いてこのステートメントを実行しようとすると、次のようになります。
UPDATE order_details
SET quantity=30
WHERE order_id=10044 AND product_id=7;
GO