假设我在Postgresql中创建了一个表,并对列进行了注释:
create table t1 (
c1 varchar(10)
);
comment on column t1.c1 is 'foo';
Run Code Online (Sandbox Code Playgroud)
一段时间后,我决定添加另一列:
alter table t1 add column c2 varchar(20);
Run Code Online (Sandbox Code Playgroud)
我想查找第一列的注释内容,并与新列关联:
select comment_text from (what?) where table_name = 't1' and column_name = 'c1'
Run Code Online (Sandbox Code Playgroud)
(什么?)将成为一个系统表,但在浏览了pgAdmin并在网上搜索后我还没有学到它的名字.
理想情况下,我希望能够:
comment on column t1.c1 is (select ...);
Run Code Online (Sandbox Code Playgroud)
但我有一种感觉,那就是伸展的东西.谢谢你的任何想法.
更新:基于我在这里收到的建议,我最终编写了一个程序来自动完成传输注释的任务,这是更改Postgresql列数据类型的更大过程的一部分.您可以在我的博客上阅读相关内容.
试图完成一些功课并遇到创建表格的问题.如何声明一系列数字的列默认值.它的内容是:"列构建(默认为1但可以是1-10)"我似乎找不到......或者知道在哪里查找这些信息.
CREATE TABLE tblDepartment
(
Department_ID int NOT NULL IDENTITY,
Department_Name varchar(255) NOT NULL,
Division_Name varchar(255) NOT NULL,
City varchar(255) default 'spokane' NOT NULL,
Building int default 1 NOT NULL,
Phone varchar(255)
)
Run Code Online (Sandbox Code Playgroud)
我试过建立int默认1在1到10之间NOT NULL,这没有用,我试过建立int默认1-10,表创建但我不认为它是正确的.
我看过MySQL 5.1文档,但仍然无法弄清楚这一点 - 我注意到我输入MySQL的代码与系统输出代码之间存在差异.
代码示例01和02之间有什么区别,这意味着02 CONSTRAINT之前添加了FOREIGN KEY- 为什么,它有什么作用?
CODE_SAMPLE_01:
FOREIGN KEY (TABLE_02_nID_FK__TABLE_01_sID_PK) REFERENCES TABLE_01(TABLE_01_sID_PK),
Run Code Online (Sandbox Code Playgroud)
背景:
CREATE TABLE `TABLE_02` (
`TABLE_02_sID_PK` int(8) NOT NULL,
`TABLE_02_nID_FK__TABLE_01_sID_PK` int(8) NOT NULL,
`TABLE_02_cID` int(8) NOT NULL,
`TABLE_02_data01` varchar(128) default NULL,
`TABLE_02_data02` varchar(128) NOT NULL,
`create_timestamp` DATETIME DEFAULT NULL,
`update_timestamp` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`TABLE_02_sID_PK`),
FOREIGN KEY (TABLE_02_nID_FK__TABLE_01_sID_PK) REFERENCES TABLE_01(TABLE_01_sID_PK),
INDEX `TABLE_02_nID_FK__TABLE_01_sID_PK` (`TABLE_02_nID_FK__TABLE_01_sID_PK`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
CODE_SAMPLE_02:
CONSTRAINT `table_02_ibfk_1` FOREIGN KEY (`TABLE_02_nID_FK__TABLE_01_sID_PK`) REFERENCES `table_01` (`TABLE_01_sID_PK`)
Run Code Online (Sandbox Code Playgroud)
背景:
CREATE TABLE …Run Code Online (Sandbox Code Playgroud) 我将创建一个包含存储Created_date的列的表,该列具有datetime数据类型.我的目标是将其默认值设置为sysdate().
我试过了
CREATE TABLE
tbl_table(created_datedatetime DEFAULT sysdate())
这给了我错误说不是有效的默认语句.我在Oracle中使用了类似的逻辑.请帮我解决这个问题.
提前致谢.
下面的两个脚本(用于改变表)是否会产生差异.. ??
脚本1:
alter table ACNT_MGR_HSTRY add DM_BTNUMBER DATA_TYPE ;
alter table ACNT_MGR_HSTRY add DM_BTID DATA_TYPE ;
alter table ACNT_MGR_HSTRY add DM_USERID DATA_TYPE ;
alter table ACNT_MGR_HSTRY add DM_WSID DATA_TYPE ;
Run Code Online (Sandbox Code Playgroud)
脚本2:
alter table ACNT_MGR_HSTRY
add
(
DM_BTNUMBER DATA_TYPE,
DM_BTID DATA_TYPE,
DM_USERID DATA_TYPE,
DM_WSID DATA_TYPE
);
Run Code Online (Sandbox Code Playgroud)
将更新使差异.. ???
update OPERATIONAL_UNIT
set ( BANK_ID=
ENTY_CODE_ID=
TIME_ZONE=
DM_BTNUMBER=
DM_BTID=
DM_USERID=
DM_WSID=
);
-----------
update OPERATIONAL_UNIT set BANK_ID=;
update OPERATIONAL_UNIT set ENTY_CODE_ID=;
update OPERATIONAL_UNIT set TIME_ZONE=;
update OPERATIONAL_UNIT set DM_BTNUMBER=;
update OPERATIONAL_UNIT set …Run Code Online (Sandbox Code Playgroud) Hibernate默认创建一个globel序列,用于为所有表生成id(在PostgreSQL的情况下),它可以扩展非常糟糕的恕我直言.虽然我可以为每个实体类型指定使用哪个序列,但我不喜欢这样做.我不喜欢明确命名序列和强制使用序列作为生成器策略,因为我希望hibernate为可能根本不支持序列的数据库生成DDL.单个全局序列也使得无法使用32位int作为主键,这意味着我必须将所有int id转换为long类型.
我们正在使用PostgreSQL.我的要求是从我的数据库中删除未使用的序列.例如,如果我通过我的应用程序创建任何表,将创建一个序列,但是为了删除表,我们也不会删除序列.如果要创建同一个表,则会创建另一个序列.
示例:table : file; 自动创建idcoumn 序列:file_id_seq
当我删除表file并再次使用相同的名称创建它时,正在创建一个新序列(即file_id_seq1).我通过这种方式在应用程序数据库中积累了大量未使用的序列.
如何删除这些未使用的序列?
我今天开始申请,当它开始时,我得到了这个错误
| 错误2012-09-14 13:54:17,608 [pool-7-thread-1]错误hbm2ddl.SchemaExport - 不成功:创建表顺序(默认情况下生成的id bigint为identity,version bigint not null,date_created timestamp not null,order varchar(255)not null,picture_id bigint not null,posts_id bigint not null,主键(id))
| 错误2012-09-14 13:54:17,609 [pool-7-thread-1]错误hbm2ddl.SchemaExport - SQL语句中的语法错误"CREATE TABLE ORDER [*](ID BIGINT由DEFAULT生成IDENTITY,VERSION BIGINT NOT NULL ,DATE_CREATED TIMESTAMP NOT NULL,ORDER VARCHAR(255)NOT NULL,PICTURE_ID BIGINT NOT NULL,POSTS_ID BIGINT NOT NULL,PRIMARY KEY(ID))"; 预期的"标识符"; SQL语句:创建表顺序(默认情况下生成的id bigint为identity,version bigint not null,date_created timestamp not null,order varchar(255)not null,picture_id bigint not null,posts_id bigint not null,primary key(id))[ 42001-164]
| 错误2012-09-14 13:54:17,621 [pool-7-thread-1]错误hbm2ddl.SchemaExport - 不成功:alter table order add constraint FK651874E9A8021F6 foreign key(posts_id)references …
是否有一种生成模式差异的DDL的方法,就像TOAD中的Synch功能一样?
不确定如何使用“ updateSQL”选项?我正在使用diff选项比较架构。
如何使用SQL(select/stored procedure/etc)从SQL Server数据库生成所有表的DDL(带外键,索引等)脚本?除了数据,我需要一切.
我不能使用Sql Server Management Studio,因为我想在一个将在linux上运行的node.js脚本中使用它!
ddl ×10
mysql ×2
postgresql ×2
sql ×2
alter-table ×1
comments ×1
grails ×1
hibernate ×1
liquibase ×1
oracle ×1
orm ×1
sequences ×1
sql-server ×1