Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何使用带有限制的过程插入数据_Mysql_Sql_Procedure - Fatal编程技术网

Mysql 如何使用带有限制的过程插入数据

Mysql 如何使用带有限制的过程插入数据,mysql,sql,procedure,Mysql,Sql,Procedure,我有一个表,希望能够在其中添加计划数据。这包括一个作为PK的代码和一个带有日期的房间。我希望限制只能够添加一行新的数据,其中包含至少一个月后的代码室和日期,并且只能安排在工作日 我尝试过用简单的语句插入数据,根据我的发现,有很多方法可以做到这一点。但我想我正处于黑洞区域,在那里我发现的一切,我不理解提供给我的信息。如果你能帮我想一想,我应该做些什么来避免我的未来陷入困境 CREATE TABLE session( code CHAR(4) NOT NULL, date DATE NOT NUL

我有一个表,希望能够在其中添加计划数据。这包括一个作为PK的代码和一个带有日期的房间。我希望限制只能够添加一行新的数据,其中包含至少一个月后的代码室和日期,并且只能安排在工作日

我尝试过用简单的语句插入数据,根据我的发现,有很多方法可以做到这一点。但我想我正处于黑洞区域,在那里我发现的一切,我不理解提供给我的信息。如果你能帮我想一想,我应该做些什么来避免我的未来陷入困境

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的新手,如果我错了,请纠正我。我想如果你想阻止插入,那么你必须使用触发器,因为触发器依赖于操作,所以每当在特定表上进行插入时,插入之前的关联触发器都会变为活动状态,以便验证和阻止插入,或者如果你只是想验证你是否可以通过过程插入数据?显然是的。