Mysql 如何使用带有限制的过程插入数据
我有一个表,希望能够在其中添加计划数据。这包括一个作为PK的代码和一个带有日期的房间。我希望限制只能够添加一行新的数据,其中包含至少一个月后的代码室和日期,并且只能安排在工作日 我尝试过用简单的语句插入数据,根据我的发现,有很多方法可以做到这一点。但我想我正处于黑洞区域,在那里我发现的一切,我不理解提供给我的信息。如果你能帮我想一想,我应该做些什么来避免我的未来陷入困境Mysql 如何使用带有限制的过程插入数据,mysql,sql,procedure,Mysql,Sql,Procedure,我有一个表,希望能够在其中添加计划数据。这包括一个作为PK的代码和一个带有日期的房间。我希望限制只能够添加一行新的数据,其中包含至少一个月后的代码室和日期,并且只能安排在工作日 我尝试过用简单的语句插入数据,根据我的发现,有很多方法可以做到这一点。但我想我正处于黑洞区域,在那里我发现的一切,我不理解提供给我的信息。如果你能帮我想一想,我应该做些什么来避免我的未来陷入困境 CREATE TABLE session( code CHAR(4) NOT NULL, date DATE NOT NUL
CREATE TABLE session(
code CHAR(4) NOT NULL,
date DATE NOT NULL,
room VARCHAR(30) NOT NULL,
CONSTRAINT pri_session PRIMARY KEY (code));
INSERT INTO session(code, date, room)
VALUES('202B', '2020.05.03', 303);
DELIMITER &&
CREATE PROCEDURE assign_schedual (IN code char(4), IN date DATE, IN room VARCHAR(30))
BEGIN
DECLARE c CURSOR FOR SELECT code FROM session;
OPEN c;
CLOSE c;
END&&
DELIMITER ;
我希望能够使用该程序确保回答的日期提前一个月,并且仅在工作日
样本数据示例:403B22019.10.02303
将拒绝插入,因为日期不是至少一个月后,而且是在一个周末 这就是你想要的吗
Begin
IIF(SELECT COUNT(*) FROM (
SELECT
code FROM
session where
sysdate() -date >30 and
DAYNAME(date) not like 'S%') >1)
THEN
.....
ELSE
//discard data..
End IF
End
这是你想要的吗
Begin
IIF(SELECT COUNT(*) FROM (
SELECT
code FROM
session where
sysdate() -date >30 and
DAYNAME(date) not like 'S%') >1)
THEN
.....
ELSE
//discard data..
End IF
End
样本数据和期望的结果将非常有用。什么是有效数据?什么是无效数据?我要插入的数据将是一个包含4个字符的代码(业务决策,例如202B),一个完整日期,包括年、月、日和一个由数字表示的3位房间号。这有助于理解吗?我希望数据根据日期进行验证,距离当前日期至少一个月,并且日期仅在工作日内(而不是周六和周日),样本数据和预期结果将真正有所帮助。什么是有效数据?什么是无效数据?我要插入的数据将是一个包含4个字符的代码(业务决策,例如202B),一个完整日期,包括年、月、日和一个由数字表示的3位房间号。这有助于理解吗?我希望根据日期验证数据,距离当前日期至少一个月,并且日期仅在工作日内(而不是周六和周日),我认为这只能检索我已有的数据?我想用这个程序来验证数据的输入。。。我是MySQL的新手,如果我错了,请纠正我。我想如果你想阻止插入,那么你必须使用触发器,因为触发器依赖于操作,所以每当在特定表上进行插入时,插入之前的关联触发器都会变为活动状态,以便验证和阻止插入,或者如果你只是想验证你你可以通过一个过程插入数据吗?当然可以。我想这只会检索到我已经拥有的数据?我想用这个程序来验证数据的输入。。。我是MySQL的新手,如果我错了,请纠正我。我想如果你想阻止插入,那么你必须使用触发器,因为触发器依赖于操作,所以每当在特定表上进行插入时,插入之前的关联触发器都会变为活动状态,以便验证和阻止插入,或者如果你只是想验证你是否可以通过过程插入数据?显然是的。