插入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