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只能说大致相同,要是涉及到内置函数之类的,只能分别去查各自的手册了。

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

  • 相关阅读:
    第十一篇 中间件
    第十篇 Form表单
    第九篇 AJAX
    第八篇Django分页
    第七篇 Django-认证系统
    第五篇Django URL name 详解
    第四篇Django之模板语言
    java_tomcat_Server at localhost was unable to start within 45 seconds 小喵咪死活启动报错-二
    java_tomcat_the_APR based Apache Tomcat 小喵咪死活启动报错_临时方案
    linux_设置开机自启动程序脚本
  • 原文地址:https://www.cnblogs.com/vanwoos/p/6872543.html
Copyright © 2011-2022 走看看