2013-08-04 128 views
-2

您好我想創建我的案例研究一個PHP-SQL應用程序,其中在我的這些屬性添加數據:PHP,SQL自動與增量

簿ID, 書名, 作者, 編輯器, ISBN

用戶將輸入書名,書ID,作者和編輯 ,並自動將有作爲每次用戶輸入時遞增的ISBN編號的輸入。 反正有可能嗎?非常感謝提前的幫助。

+0

我不認爲可以自動輸入ISBN屬性。 –

+1

是的,這是可能的。你有什麼問題?你有沒有嘗試過什麼? – peterm

+1

原因我希望它像8009-9000,所以結尾數字將增加。 – Erkyy

回答

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編號的行。

+0

哇謝謝。對不起,我只需要那個。 – Erkyy

+0

@ user2497414你非常歡迎。祝你好運 :) – peterm

0

一樣的Trung-總管Hieu勒在他的評論中寫道:
的ISBN不應該是一個自動輸入,但如果你真的想,你應該看看
Auto Increment

1

是你可以做ISBN場作爲自動遞增,從一定數目

+0

你能告訴我一個查詢嗎?或代碼。謝謝。 – Erkyy

+0

@ user2497414如果您使用ISBN,則不需要任何書籍ID,因爲ISBN已經是唯一的。我不確定你爲什麼要使用自動遞增的ISBN,因爲對於任何其固定的書籍,你不能只加上ISBN號碼,請澄清... – Joy

0

,如果你在你贏得ISBN編號工作特定的項目則是你可以設置一個字段的自動增量開始爲你的期望數量,

但是,如果它不僅僅是你贏得的ISBN號碼,而且你需要真正的書籍ISBN號碼,那麼你需要有一個ISBN號碼數據庫,其中包含書籍ISBN號碼,然後每當用戶輸入書名和其他細節,那麼ISBN將是根據書籍信息的匹配查詢自動插入您的ISBN字段中...

希望這有助於

+0

是的,我只需要書籍的ISBN爲一個特定的項目。 isbn號的獨創性根本不重要。但是如何做一個像8009-9000這樣的設定數字自動增量的字段<---最後一個數字會增加。 – Erkyy