MySQL约束语法

来源:互联网 发布:pc刷mac 编辑:程序博客网 时间:2024/06/06 00:17

外键的使用:

语法:

[CONSTRAINT symbol] FOREIGN KEY [id] (index_col_name, ...)

    REFERENCES tbl_name (index_col_name, ...)

    [ON DELETE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

    [ON UPDATE {RESTRICT | CASCADE | SET NULL | NO ACTION | SET DEFAULT}]

已有表的基础上修改:
     ALTER TABLE check_out  ADD FOREIGN KEY rid (reader_id)  REFERENCES areader(id)

Check检查的使用:
语法:
Constraint check_name check(谓词)
已有表的基础上修改:ALTER TABLE Persons  ADD CONSTRAINT chk_Person CHECK (Id_P>0 AND City='Sandnes')
删除已有的约束:ALTER TABLE Persons DROP CHECK chk_Person

触发器的使用:

示例:

DELIMITER //
CREATE
    TRIGGER sell_out 
    AFTER UPDATE/INSERT ON product
    FOR EACH ROW  --不加这句则更新n条数据只触发一次
    BEGIN
    IF(new.num<1)
    THEN SET new.state=0 
    END IF
    END//
DELIMITER ;

Trigger顺序:
  1. 把执行后的值赋给new
  2. 执行before类trigger
  3. 执行完before后,将new赋给结果,更新表
  4. 执行after类trigger
从上面我们可以看出,after类触发器对new行的set操作是没有用的,因此这样的语法也不被认可,不能通过。


原创粉丝点击