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

主要错误语法如下:

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

错误一:首先系统记录外键的表在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、 删除重复表的语法错误

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

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

3、 建外键的语法错误:

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语句的写法了。

用PowerDesign反向生成数据库Sql语句问题的更多相关文章

  1. 用LinqPad查看Nhibernate生成的sql语句

    使用Nhibernate开发一般都要对Nhibernate生成的sql语句进行查看及分析,查看Nhibernate生成的sql语句,可以使用NHProfiler和log4net.但NHProfiler ...

  2. 【转】Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

    原文链接:http://www.cnblogs.com/quanyongan/p/3152290.html 最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和  ...

  3. 深入理解 LINQ to SQL 生成的 SQL 语句

    Ø  简介 在 C# 中与数据交互最常用的语句就是 LINQ 了,而 LINQ to SQL 是最直接与数据库打交道的语句,它可以根据 LINQ 语法生成对应的 SQL 语句,在数据库中去执行.本文主 ...

  4. Hibernate利用@DynamicInsert和@DynamicUpdate生成动态SQL语句

    最近在使用Hibernate4中,发现两个很有奥秘的注解 @DynamicInsert 和 @DynamicUpdate 如果是在配置文件的话那就是dynamic -insert 和 dynamic- ...

  5. oracle问题:新建了一个PDM文件,建表后生成的sql语句中含有clustered

    问题描述 为了在oracle中新增表,在PDM中建表,使用其生成的sql语句,但是建表不能成功,提示 ORA-00906: 缺失左括号 原因是多了clustered 关键字 情景重现 1. 新建一个p ...

  6. Entity Framewrok 7beta7中不同版本sql server自动生成分页sql语句的问题

    在EF中,使用linq进行分页是很方便的,假如我们有一个EMP表,结构如下: public class Emp { [Key] public Guid No { get; set; } public ...

  7. .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中

    目录 .NET Core实用技巧(一)如何将EF Core生成的SQL语句显示在控制台中 前言 笔者最近在开发和维护一个.NET Core项目,其中使用几个非常有意思的.NET Core相关的扩展,在 ...

  8. MySQL 数据库SQL语句——高阶版本2

    MySQL 数据库SQL语句--高阶版本2 实验准备 数据库表配置: mysql -uroot -p show databases; create database train_ticket; use ...

  9. EFCore常规操作生成的SQL语句一览

    前言 EFCore的性能先不说,便捷性绝对是.Net Core平台下的ORM中最好用的,主要血统还百分百纯正. EFCore说到底还是对数据库进行操作,无论你是写Lamda还是Linq最后总归都是要生 ...

随机推荐

  1. Androidannotation使用之@Rest获取资源及用户登录验证(一)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/NUPTboyZHB/article/details/24384713 简介: 上一篇博文简单的介绍了 ...

  2. windows8安装msi软件提示2503错误的解决办法

    windows8以后的版本安装msi软件(比如nodejs.msi.Git.msi.python.msi.T ortoiseSVN.msi)的时候老师出现2503.2502的错误,究其原因还是系统权限 ...

  3. struts2不同版本在核心filter在web.xml中的配置

    FilterDispatcher是struts2.0.x到2.1.2版本的核心过滤器.配置如下: <filter> <filter-name>struts2</filte ...

  4. 二叉树前序、中序、后序非递归遍历 144. Binary Tree Preorder Traversal 、 94. Binary Tree Inorder Traversal 、145. Binary Tree Postorder Traversal 、173. Binary Search Tree Iterator

    144. Binary Tree Preorder Traversal 前序的非递归遍历:用堆来实现 如果把这个代码改成先向堆存储左节点再存储右节点,就变成了每一行从右向左打印 如果用队列替代堆,并且 ...

  5. webpack-cli解决办法

    错误信息:Error Cannot find module 'webpack-cli 出现这个错误的原因是因为只全局安装了webpack,没有安装对应的webpack-cli.再打包时是需要webpa ...

  6. Vue.js-简单的增删查功能

    1.Vue.js是什么? Vue (读音 /vjuː/,类似于 view) 是一套用于构建用户界面的渐进式框架.与其它大型框架不同的是,Vue 被设计为可以自底向上逐层应用.Vue 的核心库只关注视图 ...

  7. 【dp】最大乘积

    题目描述] 今年是国际数学联盟确定的“2000——世界数学年”,又恰逢我国著名数学家华罗庚先生诞辰90周年.在华罗庚先生的家乡江苏金坛,组织了一场别开生面的数学智力竞赛的活动,你的一个好朋友XZ也有幸 ...

  8. 算法 - 给出一个字符串str,输出包含两个字符串str的最短字符串,如str为abca时,输出则为abcabca

    今天碰到一个算法题觉得比较有意思,研究后自己实现了出来,代码比较简单,如发现什么问题请指正.思路和代码如下: 基本思路:从左开始取str的最大子字符串,判断子字符串是否为str的后缀,如果是则返回st ...

  9. react使用echarts地图实现中国地图大区展示

    日常项目中经常会用到百度地图或者echarts图标展示,今天给大家展示的是如何在react开发项目中使用百度echars的地图展示,把中国地图分为东北大区.华东大区.华南大区.华西大区.华中大区以及华 ...

  10. CSS权重的比较方法

    CSS的权重如下: !important  Infinity正无穷 行间样式  1000 id     100 class|属性|唯类 10 标签|伪元素  1 通配符   0 256进制 当出现多个 ...