插入MySQL的獲取值使用MySQL,我有以下SQL表定義:通過觸發器在Java中
CREATE TABLE books (
author INT,
book INT,
name VARCHAR(128),
PRIMARY KEY(author, book)
);
我想的是,我有一個ID爲我手動設置的作者和ID的書,對於每個作者ID增加。因此,我創建瞭如下的觸發器:
CREATE TRIGGER trBooks
BEFORE INSERT ON books
FOR EACH ROW SET NEW.book = (
SELECT COALESCE(MAX(book), -1) + 1 FROM books
WHERE author = NEW.author
);
這對我來說很好。但是現在我需要知道爲插入到Java中的條目設置的書籍ID。類似Insert
,Output
如MSSQL
或Statement.executeQuery("INSERT ...")
。解決方案必須是線程安全的,因此單獨的INSERT
和SELECT
不是好的解決方案,因爲在此期間可能還有另一個INSERT
。
感謝您的幫助!
還有其他方法可以實現線程安全 – GurV
不要使用觸發器,而是使用存儲過程插入,並讓它找到新的書號,以便它可以插入*和*返回數字。例如。請參閱[MySql:插入一行並獲取內容](http://stackoverflow.com/q/5432756/5221149)。 – Andreas
@Andreas這個觸發器是不是可以在插入過程中使用,或者「不使用觸發器」的原因是什麼?但是,謝謝你,不知道程序。這些將在Java中用'Statement.executeQuery()'調用? – WhiteStripes