2010-07-01 48 views
2

是否可以設置表中可以容納的行數? 我不想使用任何java代碼。我想用純粹的mysql腳本來做到這一點。我們可以限制MySQL中表中的行數嗎?

+0

我把這個作爲一個評論,而不是一個答案,因爲我從來沒有使用MySQL,但是在其他數據塊可以完成這與CHECK約束((SELECT COUNT(*)FROM表)<= 100)。 – 2010-07-01 04:20:03

回答

0

當創建(也許更改?)表時,Mysql支持MAX_ROWS參數。 http://dev.mysql.com/doc/refman/5.0/en/create-table.html

編輯:可悲的事實證明,這只是優化

一個提示「您計劃在表中存儲的最大行數這不是一個硬性限制,而是一個提示存儲引擎表必須能夠存儲至少這麼多行。「

..你的問題意味着腳本沒問題;把一個簡單的cron作業定期丟棄給定ID以上的表格行是否可笑?它沒有像在嘗試添加太多行時發生mysql拋出錯誤那麼優雅,但它可以完成這項工作 - 而且你也許能夠讓你的應用程序也檢查它是否爲ID太多高,並向用戶/相關方發出警告。

2

我不會建議嘗試限制SQL表中的行數,除非您有足夠的理由這樣做。看起來你會更喜歡使用如下查詢:

select top 1000 entityID, entityName from TableName 

而不是物理地限制表的行。

但是,如果你真的想將其限制在1000行:

delete from TableName where entityID not in (select top 1000 entityID from TableName) 
+3

我認爲你的意思是:從表名刪除其中entityID不在(選擇前1000名entityID表格表名) – 2010-07-01 04:43:22

+1

我喜歡你的警告反對限制行。在我看來,在封閉世界假設中一個表的謂詞很少會需要這樣一個限制,並且這個限制不會自然地從數據本身產生。我能想到的例外(例如TopTenContestants)可以更好地通過視圖而不是基礎關係來處理。 – 2010-07-01 15:49:50

相關問題