PHP-SQL自动添加增量数据

时间:2013-08-04 06:41:34

标签: php mysql sql

您好我想为我的案例研究创建一个php-sql应用程序,其中包含以下属性:

  
    

图书ID,     书名,     作者,     编辑,     ISBN

  

用户将输入图书名称,图书ID,作者和编辑 并自动输入ISBN号,每次用户输入时都会增加。 这还有可能吗?非常感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

是的,您可以将ISBN字段设置为自动增量,从明确的数字开始

答案 1 :(得分:0)

就像Trung-Hieu Le在评论中写道: ISBN不应该是自动输入,但如果你真的想要它,你应该看看
Auto Increment

答案 2 :(得分:0)

如果您正在处理特定项目的获奖ISBN编号,那么您可以将字段设置为自动增加,从您想要的数字开始,

但是,如果不仅是您赢得的ISBN编号并且您需要真实的书籍ISBN号,那么每当用户输入书籍的名称和其他详细信息然后ISBN时,您将需要一个包含书籍ISBN编号的ISBN编号数据库。将根据与书籍信息的匹配查询自动插入您的ISBN字段...

希望这个帮助

答案 3 :(得分:0)

目前还不清楚为什么你需要这个,但你可以用BEFORE INSERT触发器和一个单独的表来实现你的目标

-- A sequencing table
CREATE TABLE book_seq 
(
  id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);
-- Set initial value
ALTER TABLE book_seq AUTO_INCREMENT = 9000;

CREATE TABLE books
(
  book_id   INT,
  book_name VARCHAR(256), 
  author    VARCHAR(256),
  editor    VARCHAR(256),
  isbn      VARCHAR(12)
);

触发器

DELIMITER $$
CREATE TRIGGER tg_book_seq
BEFORE INSERT ON books
FOR EACH ROW
BEGIN
  INSERT INTO book_seq VALUES(NULL);
  SET NEW.isbn = CONCAT('8000-', LAST_INSERT_ID());
END$$
DELIMITER ;

现在您可以简单地插入行

INSERT INTO books (book_id, book_name, author, editor) VALUES
(1, 'Book1 Title', 'Author1', 'Editor1'),
(2, 'Book2 Title', 'Author2', 'Editor1');

您的伪ISBN号码将自动生成

| BOOK_ID |   BOOK_NAME |  AUTHOR |  EDITOR |      ISBN |
---------------------------------------------------------
|       1 | Book1 Title | Author1 | Editor1 | 8000-9000 |
|       2 | Book2 Title | Author2 | Editor1 | 8000-9001 |

这是 SQLFiddle 演示


另一个更简单的方法是使用INSERT ... SELECT语法并在插入时使用此类查询计算下一个伪ISBN号

INSERT INTO books (book_id, book_name, author, editor, isbn) 
SELECT 1, 'Book1 Title', 'Author1', 'Editor1',
       CONCAT('8000-', COALESCE(SUBSTRING_INDEX(MAX(isbn), '-', -1), '8999') + 1) new_value
  FROM books

这是 SQLFiddle 演示

注意:这种方法的主要缺点是,当两个或多个并发用户可能获得相同的MAX(isbn)值时,它可能会在并发环境中的高负载下失败,从而产生行重复的isbn数字。