2011-08-17 53 views
-1

我必須製作一張最多可容納1000行的表格。我如何實現這一點?如何限制no。在創建表格中的行?

我應該在創建表查詢中添加哪些其他約束條件?

+0

如果有人試圖插入第no行,會發生什麼情況。 1001? – Jacob

+2

你正在使用什麼數據庫? PostgreSQL的? MySQL的? – plang

+0

爲1001行,它應該引發一個錯誤... – akshay3004

回答

1

這是MySQL

table_option: 
{ENGINE|TYPE} [=] engine_name 
| AUTO_INCREMENT [=] value 
| AVG_ROW_LENGTH [=] value 
| [DEFAULT] CHARACTER SET [=] charset_name 
| CHECKSUM [=] {0 | 1} 
| [DEFAULT] COLLATE [=] collation_name 
| COMMENT [=] 'string' 
| CONNECTION [=] 'connect_string' 
| DATA DIRECTORY [=] 'absolute path to directory' 
| DELAY_KEY_WRITE [=] {0 | 1} 
| INDEX DIRECTORY [=] 'absolute path to directory' 
| INSERT_METHOD [=] { NO | FIRST | LAST } 
| MAX_ROWS [=] value 
| MIN_ROWS [=] value 
| PACK_KEYS [=] {0 | 1 | DEFAULT} 
| PASSWORD [=] 'string' 
| ROW_FORMAT [=] {DEFAULT|DYNAMIC|FIXED|COMPRESSED|REDUNDANT|COMPACT} 
| UNION [=] (tbl_name[,tbl_name]...) 

正如你所看到的,你有MAX_ROWS選項;只需將它設置爲1000,事情應該可以正常工作。

還檢查了手冊:http://dev.mysql.com/doc/refman/5.0/en/create-table.html

0

根據你的DBMS,你可能無法實現這一要求作爲約束

有一兩件事你可以做的是增加一個觸發器,刪除> 1000記錄在插入的情況下。如果您的DBMS支持它,如果插入後的行總數超過1000條記錄,'before'觸發器可能允許您阻止插入。

0

您可以創建AFTER INSERT觸發器來檢查表中的行號。類似於

CREATE TRIGGER MAXROWSCHECKER ON MyTable 
    AFTER INSERT 
AS 
    BEGIN 
     DECLARE @rows INT ; 
     SELECT @rows = COUNT(*) 
     FROM MyTable ; 
     IF (@rows > 1000) 
      RAISERROR ('Too many rows in TABLE myTable', 16, 1) ; 
     ROLLBACK TRANSACTION 
     RETURN 
    END 
+1

這將需要一個小小的tweeking,以允許在表中有999個記錄的情況下,我嘗試同時插入2 - 我們應該可能插入一個記錄,而不是另一個。好開始。 –