zoukankan      html  css  js  c++  java
  • 用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语句的写法了。

  • 相关阅读:
    带不带protype的区别
    一些方法(自己的认知)
    事件
    简单笔记
    freemarker Velocity获取request,session
    Freemaker中使用中括号来包含标签
    FreeMarker自定义标签
    Velocity模版自定义标签
    前端常用代码
    Eclipse中配置Ehcache提示信息
  • 原文地址:https://www.cnblogs.com/xiaoxiangfeizi/p/3544938.html
Copyright © 2011-2022 走看看