簡體   English   中英

如何在 mySQL Workbench 上添加完整性檢查

[英]How to add a integrity check on mySQL Workbench

我是 mySQL 的新手,我想在我的數據庫中添加完整性檢查(或約束?對不起,我是意大利人)。 讓我解釋一下:我有兩張桌子

Workshop (location, numPlaces, numOperations)
Operation (idoperation, workLocation, ...)

numPlaces表示車間可以承受的最大操作數。 我創建了一個觸發器,每次我在Operation中插入一條新記錄時,指向該特定位置的 Workshop 的numOperations都會增加 1。

現在我想做的是:當numOperations = numPlaces時,如果我嘗試向 Operation 插入新記錄,系統必須告訴我不能。 基本上,不可能numOperations > numPlaces

有沒有辦法做到這一點? 抱歉,如果我不能提供代碼,但我真的不知道應該在哪里 go 來創建這些類型的 CHECKS。 希望你能幫我!

為此,您必須為車間設置正確數量的位置。 你應該有一個例程,減少操作次數,這樣你就可以在一個車間進入新的操作

CREATE TABLE Workshop (location Text, numPlaces int, numOperations int )
 INSERT INTO Workshop VALUES ('A',9,8)
 CREATE TABLE Operation (idoperation int, workLocation Text)
 CREATE TRIGGER before_Operation_insert BEFORE INSERT ON Operation FOR EACH ROW BEGIN DECLARE Placescount_ INT; DECLARE Operationscount_ INT; SELECT numPlaces, numOperations INTO Placescount_,Operationscount_ FROM Workshop WHERE location = NEW.workLocation; IF Placescount_ < Operationscount_ THEN UPDATE Workshop SET numOperations = numOperations + 1 WHERE location=new.workLocation; ELSE SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = 'Maximum Number of Operarations reached in location '; END IF; END
 INSERT INTO Operation VALUES (1,'A')
 位置達到的最大操作次數

db<> 在這里擺弄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM