校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > SQL Server約束增強的兩點建議

SQL Server約束增強的兩點建議

熱門標簽:分享百度地圖標注多個位置 知名電銷機器人價格 長沙智能外呼系統 菏澤語音電銷機器人加盟公司 電銷機器人公司 需要哪些牌照 湖南電腦外呼系統平臺 外呼系統改進 地圖標注牌 廣東防封卡外呼系統原理是什么
在許多情況下,對外鍵使用更復雜的邏輯表達式是非常有用的。 此外,在某些情況下能夠在索引視圖創建約束也將非常實用。 我將舉例說明,同時我希望針對此文的投票鏈接會盡快加上。
當外鍵中需要更為復雜的邏輯表達式時
考慮下面的簡單常識: 您的設備的最大電流不能超過您插入到它的電路的最大電流。 假設下面的表存儲電路和設備數據:
復制代碼 代碼如下:

CREATE TABLE Data.Curcuits(CurcuitID INT NOT NULL
CONSTRAINT PK_Curcuits PRIMARY KEY,
MaximumCurrent INT NOT NULL,
Description VARCHAR(100) NOT NULL);
GO
INSERT INTO Data.Curcuits(CurcuitID,
MaximumCurrent,
Description)
SELECT 1, 25, 'Deck and Garage';
GO
CREATE TABLE Data.Devices(DeviceID INT NOT NULL
CONSTRAINT PK_Devices PRIMARY KEY,
CurcuitID INT NULL,
MaximumCurrent INT NOT NULL,
Description VARCHAR(100) NOT NULL,
CONSTRAINT FK_Devices_Curcuits FOREIGN KEY(CurcuitID)
REFERENCES Data.Curcuits(CurcuitID)
);
GO

It would be very convenient to issue a simple command and implement this business rule:
一個非常簡便的命令就可能實現這個業務規則:
ALTER TABLE Data.Devices ADD CONSTRAINT FK_Devices_Curcuits
FOREIGN KEY(CurcuitID, MaximumCurrent)
REFERENCES Data.Curcuits(CurcuitID, MaximumCurrent)
MATCH ON((Data.Devices.CurcuitID = Data.Curcuits.CurcuitID) AND
(Data.Devices.MaximumCurrent = Data.Curcuits.MaximumCurrent));
However, it is not supported, so I need to use a workaround, one more column and three constraints instead of one, as follows:
然而,該語句并不被支持,所以必須采用其他辦法——多增加一列約束,使用3個而不是1個約束,如下所示:
ALTER TABLE Data.Curcuits
ADD CONSTRAINT UNQ_Curcuits UNIQUE(CurcuitID, MaximumCurrent);
GO
ALTER TABLE Data.Devices ADD CurcuitMaximumCurrent INT NULL;
GO
ALTER TABLE Data.Devices DROP CONSTRAINT FK_Devices_Curcuits;
GO
ALTER TABLE Data.Devices ADD CONSTRAINT FK_Devices_Curcuits
FOREIGN KEY(CurcuitID, CurcuitMaximumCurrent)
REFERENCES Data.Curcuits(CurcuitID, MaximumCurrent)
ON UPDATE CASCADE;
GO
ALTER TABLE Data.Devices
ADD CONSTRAINT CHK_Devices_SufficientCurcuitMaximumCurrent
CHECK(CurcuitMaximumCurrent >= MaximumCurrent);
GO
You can verify that the constraints work:
你可以驗證該約束有效:
INSERT INTO Data.Devices(DeviceID,
CurcuitID,
MaximumCurrent,
CurcuitMaximumCurrent,
Description)
SELECT 1, 1, 50, 25, 'Electric car charger'
Msg 547, Level 16, State 0, Line 1
The INSERT statement conflicted with the CHECK constraint "CHK_Devices_SufficientCurcuitMaximumCurrent". The conflict occurred in database "Test", table "data.Devices".
The statement has been terminated.
INSERT 語句和CHECK約束"CHK_Devices_SufficientCurcuitMaximumCurrent"發生沖突。 該沖突發生在數據庫"Test"的"data.Devices"表。
該語句被終止執行。
As you have seen, the implementation of a very simple and very common business rule is quite involved, because such business rules are not directly supported by the database engine.
可以看出,一個非常簡單而普通的業務規則實現起來也相當繁雜,因為數據庫引擎并不直接支持這種業務規則。
When you want to create constraints on indexed views
在索引視圖上創建約束
Even when your database guarantees that “the maximum current of your device cannot exceed the maximum current of the circuit you plug it into”, it is not good enough. Consider the following sample data:
盡管數據庫保證“您的設備的最大電流不能超過您插入到它的電路的最大電流”,但這還不夠。請看下列示例數據:
INSERT INTO Data.Devices(DeviceID,
CurcuitID,
MaximumCurrent,
CurcuitMaximumCurrent,
Description)
SELECT 2, 1, 15, 25, 'ShopVac';
INSERT INTO Data.Devices(DeviceID,
CurcuitID,
MaximumCurrent,
CurcuitMaximumCurrent,
Description)
SELECT 3, 1, 15, 25, 'Miter Saw';
The database structure allows to plug more than one device into a circuit, which is correct, but if you turn both devices on, their combined maximum current exceeds the circuit's maximum current. To enforce this business rule, it would be natural to create an indexed view, so that the database guarantees that the totals are always correct:
數據庫中的數據表明可以插入一個以上的設備到電路,這沒有錯,可是當所有的設備都打開時,它們的最大電流之和會超過電路最大電流。為了加強這個業務規則,很自然的會創建一個索引視圖以使數據庫保證電流之和總是正確的。
CREATE VIEW Data.TotalMaximumCurrentPerCircuit WITH SCHEMABINDING
AS
SELECT d.CurcuitID,
c.MaximumCurrent AS CircuitMaximumCurrent,
SUM(d.MaximumCurrent) AS TotalMaximumCurrent,
COUNT_BIG(*) AS NumDevices
FROM Data.Devices d JOIN Data.Curcuits c ON d.CurcuitID = c.CurcuitID
GROUP BY d.CurcuitID, c.MaximumCurrent;
GO
CREATE UNIQUE CLUSTERED INDEX Data_TotalMaximumCurrentPerCircuit
ON Data.TotalMaximumCurrentPerCircuit(CurcuitID);
GO
If I could create a check constraint on that indexed view, I would be all set:
如果能在該索引視圖上創建一個約束,我將進行這樣的設置:
ALTER VIEW Data.TotalMaximumCurrentPerCircuit
ADD CONSTRAINT CHK_TotalMaximumCurrentPerCircuit_ValidCurcuit
CHECK(TotalMaximumCurrent = CircuitMaximumCurrent)
Instead, I need to use triggers or rather contrived kludges. A built in native support for such quite common business rules would increase the usefulness of SQL Server.
實際上,我必須使用觸發器或者精心拼湊Check約束來實現。如果數據庫內置支持這種相當普遍的業務規則,那將會增加SQL Server的實用性 。
您可能感興趣的文章:
  • mysql創建Bitmap_Join_Indexes中的約束與索引
  • Mysql中返回一個數據庫的所有表名,列名數據類型備注
  • sql語句查詢數據庫中的表名/列名/主鍵/自動增長值實例
  • sqlserver 修改列名及表名的sql語句
  • MySQL學習筆記4:完整性約束限制字段
  • sql腳本查詢數據庫表,數據,結構,約束等操作的方法
  • MySQL 添加、修改、刪除表的列及約束等表的定義
  • 使用sql語句創建和刪除約束示例代碼
  • MySQL導出所有Index和約束的方法
  • SQLSERVER實現更改表名,更改列名,更改約束代碼

標簽:美容院 泉州 福建 西寧 呼和浩特 珠海 天水 商洛

巨人網絡通訊聲明:本文標題《SQL Server約束增強的兩點建議》,本文關鍵詞  SQL,Server,約束,增,強的,兩點,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《SQL Server約束增強的兩點建議》相關的同類信息!
  • 本頁收集關于SQL Server約束增強的兩點建議的相關信息資訊供網民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    处破女av一区二区| 亚洲欧美激情在线| 狠狠网亚洲精品| 日韩一级视频免费观看在线| 日本欧洲一区二区| 精品国产露脸精彩对白| 国产盗摄一区二区| 综合久久久久综合| 欧美日韩成人综合| 狠狠色丁香婷婷综合| 国产亚洲成年网址在线观看| a级高清视频欧美日韩| 亚洲精品一二三| 欧美精品xxxxbbbb| 久久99精品久久久| 国产精品久久久久久一区二区三区| 97se亚洲国产综合在线| 亚洲国产综合在线| 精品黑人一区二区三区久久 | 欧美少妇性性性| 久久国产精品第一页| 国产精品久久久久影视| 欧美亚州韩日在线看免费版国语版| 调教+趴+乳夹+国产+精品| 欧美zozo另类异族| 色噜噜狠狠成人中文综合| 捆绑调教一区二区三区| 国产精品美女久久久久久久久久久| 日本精品一区二区三区四区的功能| 日韩国产欧美在线播放| 欧美—级在线免费片| 欧美日韩亚州综合| 国产精品一区二区久久不卡| 亚洲一区二区三区国产| 久久久精品天堂| 欧美日韩国产综合一区二区三区| 高清在线成人网| 免费观看在线色综合| 成人欧美一区二区三区小说| 欧美电影免费观看高清完整版在线观看 | 国产人成一区二区三区影院| 欧美体内she精高潮| 国产成人在线色| 免费人成在线不卡| 亚洲精品国产第一综合99久久| 国产亚洲精品中文字幕| 欧美一区午夜视频在线观看| 91女厕偷拍女厕偷拍高清| 国产美女视频91| 五月婷婷另类国产| 亚洲美女在线一区| 欧美极品少妇xxxxⅹ高跟鞋| 日韩欧美激情在线| 欧美日韩国产小视频在线观看| 99久久精品久久久久久清纯| 国产成人av电影在线观看| 免费成人av在线播放| 视频在线观看国产精品| 亚洲精品久久7777| 亚洲欧洲性图库| 国产精品乱码一区二区三区软件| 欧美大胆一级视频| 在线播放国产精品二区一二区四区| 色综合网站在线| 欧美福利电影网| eeuss鲁片一区二区三区在线观看| 久久影音资源网| 成人免费av网站| 精品一区二区三区影院在线午夜 | xnxx国产精品| 日韩视频不卡中文| 69堂国产成人免费视频| 欧美日韩一区二区三区高清 | 中文字幕在线不卡视频| 一区二区三区精品视频| 久久久久久亚洲综合影院红桃| 国产精品大尺度| 精品88久久久久88久久久| 欧美一区二区福利在线| 欧美一区午夜视频在线观看| 欧美一区二区在线看| 91精品国产综合久久香蕉的特点| 欧美日韩国产一二三| 欧美一区二区三区免费在线看| 欧美一区二区在线免费观看| 欧美成人免费网站| 精品国产免费一区二区三区香蕉| 7777精品伊人久久久大香线蕉完整版 | 欧美xxxxx牲另类人与| 国产三级欧美三级| 亚洲不卡在线观看| 午夜精品久久久久久久久| 日韩免费高清av| 91在线你懂得| 精品久久久久久最新网址| 国产精品国产三级国产aⅴ无密码| 色香色香欲天天天影视综合网| 色又黄又爽网站www久久| 日本电影欧美片| 欧美精品 日韩| 麻豆精品在线视频| 日韩午夜av一区| 91视频免费观看| 欧美日韩一级片网站| 日韩精品一区二区三区swag | 成人一区二区在线观看| 欧美久久久久中文字幕| 欧美一级一区二区| 久久这里只有精品视频网| 日本一区二区三区久久久久久久久不| 国产精品每日更新| 国产精品欧美精品| 国产酒店精品激情| 91色porny| 精品中文字幕一区二区| 成人毛片在线观看| 欧美日韩国产高清一区二区 | 国产精品一级片在线观看| 欧美日韩国产成人在线免费| 欧美一区二区三区色| 国产精品欧美一区喷水| 亚洲国产精品久久艾草纯爱| 国产毛片一区二区| 欧美在线三级电影| 欧美国产综合色视频| 人人超碰91尤物精品国产| 91年精品国产| 欧美精品一区二区三区在线播放| 亚洲卡通动漫在线| 国产久卡久卡久卡久卡视频精品| 91高清在线观看| 国产日产亚洲精品系列| 免费欧美日韩国产三级电影| 91麻豆免费看| 国产欧美一区二区三区在线看蜜臀| 亚洲电影第三页| 99国产精品国产精品毛片| 欧美mv和日韩mv的网站| 丝瓜av网站精品一区二区| 不卡一区在线观看| 久久亚洲精品小早川怜子| 日韩国产高清在线| 91国产免费看| 亚洲三级电影网站| 不卡高清视频专区| 久久久99久久精品欧美| 久久久久亚洲蜜桃| 亚洲第一成人在线| 色美美综合视频| 国产精品看片你懂得| 国产精品99久久久久久久女警 | 久久9热精品视频| 欧美日韩国产首页| 一区二区三区影院| 97精品久久久久中文字幕| 国产精品国产三级国产| 国产成人亚洲综合色影视| 精品1区2区在线观看| 久久草av在线| 精品国产网站在线观看| 紧缚捆绑精品一区二区| 欧美不卡视频一区| 国产自产v一区二区三区c| 精品裸体舞一区二区三区| 老司机精品视频一区二区三区| 5858s免费视频成人| 日韩成人dvd| 亚洲精品一区二区三区影院| 久久se精品一区二区| 久久午夜色播影院免费高清| 国产精品一区二区91| 国产欧美久久久精品影院| 不卡一二三区首页| 亚洲靠逼com| 欧美日韩不卡视频| 日韩激情视频网站| 欧美一区二区免费视频| 久久99精品久久久久久动态图 | 欧美一区二区三区小说| 裸体歌舞表演一区二区| 精品国产乱码久久| 高清av一区二区| 亚洲特级片在线| 欧洲一区在线观看| 午夜精品久久久久影视| 日韩欧美国产午夜精品| 国产精品一区二区在线看| 国产精品福利一区| 日本精品视频一区二区| 日韩高清不卡一区二区三区| 精品久久久久久久久久久久包黑料| 国产最新精品精品你懂的| 成人免费小视频| 欧美日韩国产经典色站一区二区三区| 蜜桃视频一区二区| 国产精品久久久一本精品 | 国产超碰在线一区| 亚洲精品日韩专区silk| 欧美一区二区二区| 国产成人夜色高潮福利影视|