由於我們正在從MySQL遷移到Oracle,因此我們的數據庫中有很多表格,並且自動增量主鍵ID設置了它們在MySQL中的方式。在沒有觸發器的情況下在oracle中管理/實現自動遞增主鍵
現在在oracle中我最近得知實現這個需要在每個這樣的表的id字段上創建一個序列和一個觸發器。我們的架構中有30到40個表,我們希望避免在我們的產品中使用數據庫觸發器,因爲數據庫管理超出了我們軟件應用的範圍。
我在執行oracle中的自動遞增id功能時有什麼選擇...除了在代碼中手動指定id並在代碼中管理它,這會改變很多現有的insert語句。
...我不知道是否有辦法從grails代碼本身做到這一點? (順便說一下指定ID爲域類映射行不通增量的方法 - 僅適用於MySQL的) 關於我們的應用程序environement一些信息:Grails的-常規,休眠,Oracle,MySQL等支持
您希望通過創建觸發器和序列來引入哪些管理任務?從本質上講,它與MySQL自動增量完成的完全相同,但您自己構建它。 – 2012-01-10 10:36:38
觸發失敗的頻率如何? – 2012-01-10 18:54:20
取決於裏面的代碼。我從來沒有看到觸發器因爲其他原因而失敗,除了序列的問題,也導致其他解決方案失敗。使用觸發器的好處是,PK生成機制不僅適用於您的應用程序,而且適用於使用SQL或其他方式/應用程序插入數據的直接插入。我經常結合這兩種解決方案。讓休眠在我的應用程序中執行PK生成,並使用在沒有提供PK時生成PK的觸發器。 – 2012-01-12 08:11:33