• 用PowerDesign反向生成数据库Sql语句问题


            在用Pd15反向生成数据库时,生成的Sql语句在Sql Server Manager Studio里面报错,根本就执行不了。数据库用的是Sql Server 2008 R2。经过一番修改,最后终于让这些Sql语句全部能执行成功了。原因可能是它生成的语法默认是MySQl数据库。这块没仔细研究,也有可能是在里面有个地方可以设置,但是我没找到地方。

    主要错误语法如下:

    1、 删除重复外键的语法错误

    clip_image002

    错误一:首先系统记录外键的表在Sql Server 2008R2中是sys.foreign_keys而不是它默认生成的sys.sysforeignkey,另外外键名字也不是role而是name;

    (sql server 2008中的系统表具体参见:http://www.cnblogs.com/lzrabbit/archive/2011/06/06/2073507.html

    错误二:Sql中没有if then的用户,只有case when then的用法。所以这块需要改成if begin end这样的用法;

    错误三:删除外键不是delete foreign key而是drop constraint

    2、 删除重复表的语法错误

    clip_image004

    错误一:系统记录所有表的系统表在Sql Server 2008R2中是sys.tables而不是它默认生成的sys.systable,另外表的名字也不是table_name而是name,而且也没有table_type这个属性;

    错误二:Sql中没有if then的用户,只有case when then的用法。所以这块需要改成if begin end这样的用法;

    3、 建外键的语法错误:

    clip_image006

    On update restrict表示在更新的时候使用这个约束,restrict: 只要本表格里面有指向主表的数据, 在主表里面就无法更新/删除相关记录,相当于no action。但这种想法是MySql的,在sql Server 里面要写成 no action

    参考 http://msdn.microsoft.com/en-us/library/ms174123.aspx

    ALTER TABLE table_name

    ADD

    < table_constraint > ::=

    [ CONSTRAINT constraint_name ]

    | FOREIGN KEY

    ( column [ ,...n ] )

    REFERENCES ref_table [ (ref_column [ ,...n ] ) ]

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

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

    参考网址:http://bbs.csdn.net/topics/310202211

    PS:整理完了,就找到了设置的地方,刚才只顾闷头去找Sql语句错误的地方,没仔细去找,具体怎样设置,参见这篇文章:

    http://www.cnblogs.com/xiaoxiangfeizi/p/3544935.html:就纯属当熟悉一下Sql Server的Sql语句的写法了。

  • 相关阅读:
    C++对象模型2--指针cout结果
    C++对象模型4--有重写的单继承
    C++对象模型3--无重写的单继承
    C++对象模型6--对象模型对数据访问的影响
    C++对象模型--C++对象模型
    二叉树先序遍历算法实现
    C/C++指针和数组的关系
    xml 基础学习备忘
    Maven 更换远程仓库地址
    Maven 添加自定义 archetype
  • 原文地址:https://www.cnblogs.com/xiaoxiangfeizi/p/3544938.html
Copyright © 2020-2023  润新知