zoukankan      html  css  js  c++  java
  • mariadb中创建外键时的一个奇怪的情况

    在建表语句中,将参照的定义放到对应的属性后面,类似于这样:

    create table tbl2 (id int references tbl1(id));

    发现并没有成功创建外键。

    而将参照的定义放到所有属性后面,类似于这样:

    create table tbl2 (id int,foreign key id references tbl1(id));

    可以成功创建外键。

    仔细看了一下语法的定义,第一种用法是符合其语法定义的。

    找了一下,没找到相关问题的说明,然后准备提交bug了。

    在mariadb的jira中发现已经有人提交bug了。

    相关jira页面:https://jira.mariadb.org/browse/MDEV-7546?jql=text%20~%20%22foreign%20key%22

    在下面已经有人评论,并给出了MySQL的一个链接:https://dev.mysql.com/doc/refman/5.6/en/create-table-foreign-keys.html

    看起来MySQL也存在这样的问题,而且还是故意的。

    这么明显的问题,mariadb的手册中应该也会提到才对,于是继续翻看mariadb的手册,果然找到了,链接如下:

    https://mariadb.com/kb/en/mariadb/foreign-keys/

    里面提到这么一句:

    MariaDB accepts the REFERENCES clause in ALTER TABLE and CREATE TABLE statements, but that syntax does nothing. MariaDB simply parses it without returning any error or warning, for compatibility with other DBMS's.

    也是故意的。

    各家DBMS使用的SQL都有一些自己的特点,各自使用的SQL只能说大致相同,要是涉及到内置函数之类的,只能分别去查各自的手册了。

    写这些内容只是为了记录这个奇怪的现象。

  • 相关阅读:
    Sql Server中暂停命令
    优化SQL Sever查询语句的几个要点
    SQL Server 常用日期查询语句
    Android开发环境配置
    java实验报告(实验一)
    java实验报告(实验二)
    学习java的一点体会
    [已解决]求助:vs2003用代码实现excel的设置
    关于webform信息提示框
    DataGrid按钮事件的触发
  • 原文地址:https://www.cnblogs.com/vanwoos/p/6872543.html
Copyright © 2011-2022 走看看