我有一張競標拍賣表,對於某個拍賣的每個出價應該高於其他每個拍賣對象。 這怎麼辦?因爲我不知道如何使約束工作,所以我想過使用觸發器,但沒有發現任何類似的目標(我對sql很陌生)。對同一表格中的其他行執行強制約束
我的表創建SQL:
CREATE TABLE bid(
id_auction NUMBER(10) NOT NULL,
username VARCHAR(20) NOT NULL,
amount FLOAT NOT NULL,
b_date DATE NOT NULL,
CONSTRAINT pk_bid PRIMARY KEY (id_auction, username, amount),
FOREING KEY (username) REFERENCES user(username),
FOREIGN KEY (id_auction) REFERENCES auction(id_auction)
);
我不完全觸發:
CREATE OR REPLACE TRIGGER high_bid_trigger
BEFORE INSERT
ON bid
DECLARE
highest_bid NUMBER;
BEGIN
highest_bid := (SELECT min(amount)
FROM bid
WHERE username = :NEW.username
AND id_aution = :NEW.id_auction)
if highest_bid < :NEW:bid
我使用的是Oracle數據庫。
首先,可能會改變min的最大和擺脫「其中username」按您的要求加粗。其次,您可能需要使用RAISE_APPLICATION_ERROR。一旦你完成了這兩件事情,請包括解釋者在嘗試創建觸發器和測試時給出的信息。 –