1

私を助けてください、私は少し頭がおかしくなる単純なケースを持っています、私はPRODUCTSここに呼ばれるテーブルを持っています構造です

create table PRODUCT (
  ID_PRODUCT CHAR(5) primary key not null,
  NAME_PRODUCT CHAR(30),
  PRICE_PRODUCT integer
)

次に、2番目のテーブルはTRANSACTIONです。これがテーブル構造です

create table TRANSACTION (
  ID_TRANSACTION CHAR(5) primary key not null,
  ID_PRODUCT CHAR(30) REFERENCES PRODUCTS(ID_PRODUCT),
  PRICE integer,
  QUANTITY integer
)

ID_PRODUCTその後、ユーザーがテーブルの列にデータを入力したときに機能するトリガーを作成したいのですが、挿入されたデータに従ってテーブルTRANSACTIONSの列からデータを自動的にフェッチ/選択PRICEし、テーブルの列を更新します。PRODUCTSID_PRODUCTPRICETRANSACTIONS

私は SQL Server の初心者です...この場合、私が何をしなければならないのかわかりません。ありがとうございます。

4

2 に答える 2

1

このようなものはおそらくあなたが必要とすることをするでしょう:

CREATE TRIGGER UpdateTransaction 
ON [TRANSACTION] 
INSTEAD OF INSERT
AS 
BEGIN  

INSERT [TRANSACTION] (ID_TRANSACTION, ID_PRODUCT, PRICE, QUANTITY)
SELECT INSERTED.ID_TRANSACTION, INSERTED.ID_PRODUCT, PRODUCT.PRICE_PRODUCT, INSERTED.QUANTITY
FROM INSERTED
JOIN PRODUCT ON INSERTED.ID_PRODUCT = PRODUCT.ID_PRODUCT

END

通常の挿入を実行し、行をテーブルにINSTEAD結合して、右に挿入できるようにします。必要に応じて、 に対して同様のことを行うことができます。INSERTEDPRODUCTPRICE_PRODUCTUPDATE

余談TRANSACTIONですが、テーブルのひどい名前です-T-SQLの予約語です(エディターとこのWebサイトによって強調表示されることに注意してください)-それは言語の一部であるため、オブジェクトでは避けます名前。

おそらく、次のようにテーブルに名前を付ける方が良いかもしれません:

TRANSACTION -> tbl_Transactions
PRODUCT -> tbl_Products
于 2013-05-16T22:22:04.730 に答える