亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > 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約束增強的兩點建議的相關信息資訊供網民參考!
  • 推薦文章
    九九久久99综合一区二区| 精品视频在线观看一区二区三区| 久久精品店| 一本高清在线| 九九精品在线播放| 亚洲第一页色| 黄色福利| 日本免费乱人伦在线观看| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 91麻豆爱豆果冻天美星空| 99久久精品费精品国产一区二区| 成人免费观看的视频黄页| 九九久久国产精品| 国产麻豆精品hdvideoss| 国产精品123| 欧美激情一区二区三区视频 | 99热热久久| 欧美激情一区二区三区视频高清| 亚洲第一色在线| 国产网站免费视频| 精品视频在线观看免费| 一本高清在线| a级精品九九九大片免费看| 二级片在线观看| 国产国语对白一级毛片| 久久久久久久网| 欧美激情一区二区三区中文字幕| 一级毛片视频播放| 人人干人人草| 青青青草影院 | 天天做日日爱| 日本伦理片网站| 午夜欧美福利| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 韩国三级视频网站| 久草免费在线色站| 成人免费观看的视频黄页| 天天做日日爱| 国产伦精品一区三区视频| 国产成人欧美一区二区三区的| 成人影视在线播放| 超级乱淫黄漫画免费| 亚洲 国产精品 日韩| 午夜激情视频在线观看| 99久久精品国产国产毛片| 日韩中文字幕在线亚洲一区| 欧美日本免费| 国产激情一区二区三区| 麻豆系列 在线视频| 日本特黄特黄aaaaa大片| 日本免费看视频| 精品在线观看一区| 久久国产影视免费精品| 高清一级做a爱过程不卡视频| 国产一区精品| 国产一区二区精品久久91| 一本高清在线| 久久国产精品永久免费网站| 国产网站免费视频| 日韩中文字幕在线观看视频| 国产高清视频免费| 沈樵在线观看福利| 麻豆网站在线免费观看| 91麻豆国产级在线| 亚洲天堂免费观看| 色综合久久天天综合| 欧美一区二区三区在线观看| 国产精品免费久久| 久久精品道一区二区三区| 国产不卡精品一区二区三区| 久久精品欧美一区二区| 日本免费乱人伦在线观看| 欧美一级视频免费观看| 天堂网中文字幕| 欧美大片aaaa一级毛片| 久久久成人网| 国产成人精品综合| 国产一区二区精品| 可以免费在线看黄的网站| 日韩欧美一及在线播放| 美国一区二区三区| 你懂的福利视频| 日本在线不卡视频| 91麻豆精品国产高清在线| 日韩免费在线观看视频| 日韩专区第一页| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 成人免费网站视频ww| 精品久久久久久影院免费| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 久久精品成人一区二区三区| 国产a毛片| 中文字幕97| 成人影视在线观看| 韩国三级香港三级日本三级| 欧美激情一区二区三区在线 | 沈樵在线观看福利| 国产91精品一区| 韩国毛片基地| 美女免费精品视频在线观看| 日本乱中文字幕系列 | 精品视频在线观看一区二区三区| 国产一区二区精品久久| 99久久精品国产高清一区二区| 欧美a免费| 四虎影视库国产精品一区| 成人免费一级纶理片| 亚洲 国产精品 日韩| 你懂的福利视频| 免费的黄色小视频| 香蕉视频久久| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 一级女性全黄生活片免费| 久久久成人影院| 国产成人啪精品| 国产一区二区高清视频| 日韩欧美一二三区| 精品国产亚洲人成在线| 精品国产亚洲人成在线| 青青久久网| 国产一区二区高清视频| 麻豆污视频| 色综合久久久久综合体桃花网| 黄色福利| 久久久成人影院| 黄视频网站在线看| 国产不卡精品一区二区三区| 精品视频在线观看免费| 99色视频| 天天做日日爱夜夜爽| 午夜激情视频在线观看| 欧美18性精品| 国产一区精品| 四虎影视久久| 黄视频网站在线看| 欧美α片无限看在线观看免费| 韩国妈妈的朋友在线播放| 国产网站免费| 999久久狠狠免费精品| 久久国产精品永久免费网站| 一级女性全黄久久生活片| 国产伦理精品| 日韩av片免费播放| 青青久久国产成人免费网站| 日本伦理片网站| 国产精品免费精品自在线观看| 可以免费看污视频的网站| 精品国产亚洲人成在线| 国产视频久久久久| 99色播| 国产一区二区精品久久91| 日韩av成人| 欧美爱爱网| 久久精品免视看国产成人2021| 国产一区免费在线观看| 日韩中文字幕在线播放| 美女免费黄网站| 精品在线观看国产| 黄色福利| 亚洲www美色| 日韩av成人| 毛片电影网| 午夜精品国产自在现线拍| 欧美电影免费看大全| 九九精品在线播放| 九九久久国产精品| 亚洲 国产精品 日韩| 精品国产三级a| 91麻豆精品国产片在线观看| 国产高清在线精品一区a| 国产一区二区高清视频| 精品视频在线观看免费| 国产伦理精品| 97视频免费在线| 亚洲天堂一区二区三区四区| 国产精品1024永久免费视频| 国产91视频网| 成人在免费观看视频国产| 亚洲精品久久久中文字| 黄色短视频网站| 久久99中文字幕| 可以免费看毛片的网站| 99久久精品国产高清一区二区| 天天做日日爱夜夜爽| 国产a视频| 亚洲 欧美 91| 一级毛片看真人在线视频| 成人影视在线观看| 成人免费一级纶理片| 麻豆系列 在线视频| 日韩av片免费播放| 日韩中文字幕在线播放| 精品国产一区二区三区精东影业 | 精品久久久久久影院免费| 久久精品欧美一区二区| 中文字幕一区二区三区精彩视频 | 99色播| 欧美激情一区二区三区在线 | 日本免费看视频| 欧美激情一区二区三区在线|