美文网首页
数据库的建表、序列

数据库的建表、序列

作者: 倒霉的小当家 | 来源:发表于2019-04-19 20:59 被阅读0次

    今天学习了序列,一般用于序号递增,值得注意的是如果出错的话最好重新创建序列,不要再做操作,还讲了一些建表操作。

      1.创建sequence表

    CREATE TABLE `sequence` (

      `name` varchar(50) COLLATE utf8_bin NOT NULL COMMENT '序列的名字',

      `current_value` int(11) NOT NULL COMMENT '序列的当前值',

      `increment` int(11) NOT NULL DEFAULT '1' COMMENT '序列的自增值',

      PRIMARY KEY (`name`)

    ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

    2.创建–取当前值的函数

    BEGIN

        DECLARE value INTEGER;

        SET value = 0;

        SELECT current_value INTO value

              FROM sequence

              WHERE name = seq_name;

        RETURN value;

    END

    3.创建–取下一个值的函数

    DROP FUNCTION IF EXISTS nextval;

    DELIMITER $

    CREATE FUNCTION nextval (seq_name VARCHAR(50))

        RETURNS INTEGER

        LANGUAGE SQL

        DETERMINISTIC

        CONTAINS SQL

        SQL SECURITY DEFINER

        COMMENT ''

    BEGIN

        UPDATE sequence

              SET current_value = current_value + increment

              WHERE name = seq_name;

        RETURN currval(seq_name);

    END

    $

    DELIMITER ;

    4.创建–更新当前值的函数

    DROP FUNCTION IF EXISTS setval;

    DELIMITER $

    CREATE FUNCTION setval (seq_name VARCHAR(50), value INTEGER)

        RETURNS INTEGER

        LANGUAGE SQL

        DETERMINISTIC

        CONTAINS SQL

        SQL SECURITY DEFINER

        COMMENT ''

    BEGIN

        UPDATE sequence

              SET current_value = value

              WHERE name = seq_name;

        RETURN currval(seq_name);

    END

    $

    DELIMITER ;

    还讲了视图,

    视图是表的select 返回的结果集,操作视图的基表也会改变视图,操作视图也会改变基表,不过一般都不会改动视图,会造成很大的影响,所以设置为只读的。  视图可以看作是JAVA中的封装方法,多次使用简化时,才用得上。不是多次使用的不推荐使用。

    今天暂时到这里,明天还有= = !

    相关文章

      网友评论

          本文标题:数据库的建表、序列

          本文链接:https://www.haomeiwen.com/subject/njthgqtx.html