PowerDesigner生成MS SQL foreign 的问题
简单地说,就是从CDM生成PDM的时候,releationship约束无效,不能生成外键约束的代码。生成基于oracle的pdm没问题,ms sql server有问题
这里的是sql server 2005
Power Designer是15.0.0.2613
看起來是PD的bug,解決辦法是在PDM畫面中點選Model->References...
會跳出一個視窗裡頭有這個PDM的所有Reference的相關資訊,最後有個欄位叫Implementation可以直接設定成Declarative就好了。
補充一下,如果Implementaion無法強制設成Declarative,可將Current DBMS設成Sql Server 2000即可。設定完後再改回來Sql server 2005/2008即可。 不知道甚麼原因導致Sql 2005/2008的DBMS會強制Reference Integrity設成用trigger的方式。
当从CDM转到PDM(MS SQL Server)的时候,在CDM中的ReleationShip不能在CDM的foreign生成有效代码,References的Privew标签显示内容为:
-- The preview is empty because of the setting.
-- Check the generation option.
查看integrity标签,implementation显示为trigger,update/delete constraint分别为restrict,改变为update/delete constraint为none,并且改implementation为declarative后,preview中代码显示正常,如下:
if exists (select 1
from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F')
where r.fkeyid = object_id('meb_FriendRequest') and o.name = 'FK_MEB_FRIE_RS_MEMBER_MEB_MEMB')
alter table meb_FriendRequest
drop constraint FK_MEB_FRIE_RS_MEMBER_MEB_MEMB
go
alter table meb_FriendRequest
add constraint FK_MEB_FRIE_RS_MEMBER_MEB_MEMB foreign key (Member_ID)
references meb_Member (Member_ID)
go
根据提示,在创建pdm的时候查看选项,发现for sql server与for oracle内容不一样。 实验步骤:
1.建立一个cdm
2.建立两个实体,分别是parent和child,并且在这两个实体中间建立一对多的relationship。
3.将cdm生成for oracle 10g的pdm,查看child表的外键约束,在标签preview中可以看到创建外键约束的代码
4.将cdm生成for ms sql 2005的pdm,
相关文档:
系统环境:Windows 7
软件环境:Visual C++ 2008 SP1 +SQL Server 2005
本次目的:编写一个航空管理系统
这是数据库课程设计的成果,虽然成绩不佳,但是作为我用VC++ 以来编写的最大程序还是传到网上,以供参考。用VC++ 做数据库设计并不容易,但也不是不可能。以下是我的程序界面,后面 ......
新建表:
create table [表名]
(
[自动编号字段] int IDENTITY (1,1) PRIMARY KEY ,
[字段1] nVarChar(50) default \'默认值\' null ,
[字段2] ntext null ,
[字段3] datetime,
[字段4] money null ,
[字段5] int default 0,
[字段6] Decimal (12,4) default 0,
[字段7] image null ,
)
删除表:
Drop table [ ......
引用
show me 的 SQL SERVER命令大全(值得学习的东西)
--语 句 功 能
--数据操作
SELECT --从数据库表中检索数据行和列
INSERT --向数据库表添加新数据行
DELETE --从数据库表中删除数据行
UPDATE --更新数据库表中的数据
--数据定义
CREATE TABLE --创建一个数据库表
DROP TABLE --从数据库中删除表
ALTER T ......
为包含列的对象(如视图或表)的每列返回一行。下面是包含列的对象类型的列表。
表值程序集函数 (FT)
内联表值 SQL 函数 (IF)
内部表 (IT)
系统表 (S)
表值 SQL 函数 (TF)
用户表 (U)
视图 (V)
列名 数据类型 说明
object_id
int
此列所属对象的 ID。
name
sysname
列名。在对象中是唯一的。
column_id
in ......
QL分类:
DDL—数据定义语言(CREATE,ALTER,DROP,DECLARE)
DML—数据操纵语言(SELECT,DELETE,UPDATE,INSERT)
DCL—数据控制语言(GRANT,REVOKE,COMMIT,ROLLBACK)
首先,简要介绍基础语句:
1、说明:创建数据库
CREATE DATABASE database-name
2、说明:删除数据库
drop database dbname
3、 ......