ozs*_*gal 6 database-design sql-server ddl erwin
我正在尝试使用 ERWIN 7 从我的逻辑模型生成物理数据库。
在自动生成的脚本中一切都很好,唯一的问题是模型是在默认 SQL Server 的数据库“master”中创建的,而不是在我与模型一起插入的数据库中创建的。
我找不到将我的 MODEL 与我与模型一起创建的数据库相关联的方法。
这是 ERWIN 自动生成的脚本:
CREATE DATABASE Movies go
ALTER DATABASE Movies SET RECOVERY FULL go
CREATE SCHEMA fbd AUTHORIZATION dbo go
CREATE DEFAULT Default_Value_movies_gen AS 1 go
CREATE DEFAULT Default_Value_titulo_movies AS 'No title' go
Run Code Online (Sandbox Code Playgroud)
但它应该自动生成:
CREATE DATABASE Movies go
--Here should be "USE Movies",to use database that ERWIN have just created
ALTER DATABASE Movies SET RECOVERY FULL go
CREATE SCHEMA fbd AUTHORIZATION dbo go
CREATE DEFAULT Default_Value_movies_gen AS 1 go
CREATE DEFAULT Default_Value_titulo_movies AS 'No title' go
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
小智 1
您必须编辑正向工程模板(FE 模板)。
说起来简单,做起来难。
由于每一类实体(表、视图、SP 等)都有自己的生成代码块,因此必须对每个主要入口点进行生成代码块。
至于 SQL Server 2005 Erwin 7.3 版本的模板,在“创建实体”模板开头注入的以下代码将用于表 DML。
/*
We will save a global flag '_SQL_USE_DATABASE' is used to flag a variable of the same name initialization */
/
@ifnot( IsGlobalFlagSet("_SQL_USE_DATABASE") )
{
Set( "_SQL_USE_DATABASE", "")
SetGlobalFlag( "_SQL_USE_DATABASE" )
}
@if( IsPropertyNotNull("SQLServer_File_Group_Ref") )
{
PushReference( "SQLServer_File_Group_Ref" )
PushOwner
@ifnot( Equal(Value("_SQL_USE_DATABASE"), Property("Name")) )
{
FE::Bucket( "90" )
"USE " Property("Name")
FE::EndOfStatement
Set( "_SQL_USE_DATABASE", Property("Name") )
}
Pop
Pop
}
@else
{
Set( "_SQL_USE_DATABASE", "" )
}
Run Code Online (Sandbox Code Playgroud)