2012-08-29 25 views
0

有點像類中的靜態變量。表可以有一個與IT相關的值嗎?

例如,可以說我有一個保留人員的表格。然後爲每一行我有一堆列:年齡,性別,名稱... 但我想要一個值與表本身相關聯,可以說,minimum allowed age = 18。然後,每當我添加一個新的人,我會檢查他們的年齡是否大於Table.minimum_allowed_age。這樣我就可以輕鬆地改變這個值,而不用在任何地方硬編碼。

我現在可以做到的唯一方法是創建一個只有一個選項18的ENUM列,然後每行都有它。這顯然不是實現它的方法,特別是如果你想經常改變這個值(這是我的應用程序中的情況)。

+0

我不太清楚你的意思,靜態變量是在對象實例之間共享的,但是表中只有一個實例...? –

+0

編輯澄清 – polvoazul

回答

1

靜態變量在技術上是全局的。如何使用另一個表來存儲全局屬性?

一個主鍵的字符串,另一個字符串CAST爲嵌套查詢中的一個整數提取值將工作。

你還不如用一個整數值,如果有足夠的或幾個,如果你想不同類型的maybe- NULL列類型安全(您可能COALESCECAST結果爲完全通用與字符串字符串>字符串視圖) 。

對於與表關聯的全局變量,您可以建立適當的約定,例如,在表格名稱和一些分隔符前加上密鑰。

2

不是。某些數據庫服務器允許您將少量元數據附加到表中(例如,MySQL中的AUTO_INCREMENT值或各種SQL數據庫中的COMMENT字段),但它們不適用於通用數據存儲。

在你的情況,你所描述的(最小允許年齡)的值不是表的屬性在所有 - 這是你應用程序邏輯的屬性。如果它長期保持不變,那麼把它作爲常量寫在你的代碼中;如果更改頻率更高,則創建一個單獨的表,該表存儲整個應用程序的配置鍵/值對。

+0

您認爲我應該如何處理我的情況? – polvoazul

+0

編輯了一些想法。 – duskwuff

0

您可以嘗試編寫插入觸發器。在觸發代碼內部,可以檢查最小年齡是否爲18,如果不是,則可以將其設置爲18.

相關問題