共計 1950 個字符,預計需要花費 5 分鐘才能閱讀完成。
本篇內容介紹了“DM7 SQL 域怎么管理”的有關知識,在實際案例的操作過程中,不少人都會遇到這樣的困境,接下來就讓丸趣 TV 小編帶領大家學習一下如何處理這些情況吧!希望大家仔細閱讀,能夠學有所成!
管理 SQL 域
為了支持 SQL 標準中的域對象定義與使用,DM 支持 DOMAIN 的創(chuàng)建、刪除以及授權 DDL 語句,并支持在表定義中使用 DOMAIN。域(DOMAIN)是一個可允許值的集合。域在模式中定義,并由 域名 標識。域是用來約束由各種操作存儲于基表中某列的有效值集。域定義說明一種數(shù)據(jù)類型,它也能進一步說明約束域的有效值的 域約束,還可說明一個 缺省子句,該子句規(guī)定沒有顯式指定值時所要用的值或列的缺省值。
創(chuàng)建 DOMAIN
CREATE DOMAIN 創(chuàng)建一個新的數(shù)據(jù)域。定義域的用戶成為其所有者。DOMAIN 為模式類型對象,其名稱在模式內唯一。
舉例說明
SQL CREATE DOMAIN DA INT CHECK (VALUE 100); executed successfully used time: 11.754(ms). Execute id is 148. SQL select name,id from sysobjects where name= DA
LINEID NAME ID
---------- ---- -----------
1 DA 419430401
used time: 0.945(ms). Execute id is 149.
使用 DOMAIN
在表定義語句中,支持為表列聲明使用域。如果列聲明的類型定義使用域引用,則此列定義直接繼承域中的數(shù)據(jù)類型、缺省值以及 CHECK 約束。如果列定義使用域,然后又自己定義了缺省值,則最終使用自己定義的缺省值。用戶可以使用自己的域。如果要使用其它用戶的域,則必須被授予了該域的 USAGE 權限。DBA 角色默認擁有此權限。
例如在 T 表中使用上面創(chuàng)建的域 DA。
SQL CREATE TABLE T(ID DA);
executed successfully
used time: 12.655(ms). Execute id is 149.
SQL select name,id from sysobjects where name= T
LINEID NAME ID
---------- ---- -----------
1 T 1540
used time: 1.255(ms). Execute id is 157.
SQL select * from syscolumns where id=1540;
LINEID NAME ID COLID TYPE$ LENGTH$ SCALE NULLABLE$ DEFVAL INFO1 INFO2
---------- ---- ----------- ----------- ------- ----------- ----------- --------- ------ ----------- -----------
1 ID 1540 0 INTEGER 4 0 Y NULL 0 0
used time: 1.249(ms). Execute id is 158.
SQL insert into t values(1);
affect rows 1
used time: 1.180(ms). Execute id is 160.
SQL insert into t values(100);
insert into t values(100);
[-6604]:Violate check constraint of [CONS134218952].
used time: 1.176(ms). Execute id is 0.
列定義雖然使用了域后,其 SYSCOLUMNS 系統(tǒng)表中類型相關字段記錄域定義的數(shù)據(jù)類型。也就是說,從 SYSCOLUMNS 系統(tǒng)表中不會表現(xiàn)出對域的引用。使用某個域的用戶必須具有該域的 USAGE DOMAIN 或 USAGE ANY DOMAIN 權限。
刪除 DOMAIN
刪除一個用戶定義的域。用戶可以刪除自己擁有的域,具有 DROP ANY TABLE 系統(tǒng)權限的用戶則可以刪除任意模式下的域。RESTRICT 表示僅當 DOMAIN 未被表列使用時才可以被刪除;CASCADE 表示級聯(lián)刪除。
例如:
SQL DROP DOMAIN DA CASCADE;
executed successfully
used time: 29.834(ms). Execute id is 163.
“DM7 SQL 域怎么管理”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關的知識可以關注丸趣 TV 網站,丸趣 TV 小編將為大家輸出更多高質量的實用文章!