什么是检查NHibernate中是否存在表(或使用Fluent-NHibernate)的最佳,最一致的方法?
它甚至可能吗?我的意思是对于如此重型的ORM来说,这似乎是一项简单的任务.
另外在一个相关问题上,您可以检查NHibernate是否存在一组表或整个模式吗?
在这段代码中,我试图删除表,如果它们每次运行程序时已经存在,但控件不在if语句中.table1和table2存在于数据库中.我在我的数据库中检查过.由于它不在if语句中,所以当我尝试创建表时,它在最后一行给出了以下错误:ORA-00955: name is already used by an existing object.我究竟做错了什么?
Statement statement = connection.createStatement();
DatabaseMetaData md = connection.getMetaData();
String[] types = {"TABLE"};
ResultSet rs1 = md.getTables(null, null, "table1",types );
if (rs1.next()) {
System.out.println(rs1.getString(3));
statement.executeUpdate("drop table table1");
}
rs1.close();
ResultSet rs2 = md.getTables(null, null, "table2", types);
if (rs2.next()) {
statement.executeUpdate("drop table table2");
}
rs2.close();
statement.executeUpdate("create table table1(" +.....
Run Code Online (Sandbox Code Playgroud) 我正在维护一个通过JDBC创建Oracle DB的应用程序.从今天开始这个查询:
SELECT NULL AS pktable_cat ,
p.owner AS pktable_schem,
p.table_name AS pktable_name ,
pc.column_name AS pkcolumn_name,
NULL AS fktable_cat ,
f.owner AS fktable_schem,
f.table_name AS fktable_name ,
fc.column_name AS fkcolumn_name,
fc.position AS key_seq ,
NULL AS update_rule ,
DECODE (f.delete_rule, 'CASCADE', 0, 'SET NULL', 2, 1) AS delete_rule ,
f.constraint_name AS fk_name ,
p.constraint_name AS pk_name ,
DECODE(f.deferrable, 'DEFERRABLE',5 ,'NOT DEFERRABLE',7 , 'DEFERRED', 6 ) deferrability
FROM all_cons_columns pc,
all_constraints p ,
all_cons_columns fc,
all_constraints f
WHERE 1 = …Run Code Online (Sandbox Code Playgroud) 我只需要使用java DatabaseMetaData获取过程,但此方法还返回函数的名称.
DatabaseMetaData dbmd=con.getMetaData();
ResultSet result = dbmd.getProcedures(null, Ousername, null);
Run Code Online (Sandbox Code Playgroud) 如何从服务器复制一个表一个数据库DB1到服务器乙数据库DB2?
我能够将一个表从一个数据库复制到服务器中的另一个数据库,但不能跨越服务器.
CREATE TABLE recipes_new LIKE production.recipes;
INSERT recipes_new SELECT * FROM production.recipes;
Run Code Online (Sandbox Code Playgroud)
我正在做的所有事情是减少服务器负载,以便我可以将表信息复制到另一个服务器并在那里运行我的查询...
在 Postgres 10 中我声明了以下内容:
create table test_abc (
pk integer not null,
id integer not NULL,
id2 integer not null,
PRIMARY KEY (pk)
);
CREATE UNIQUE INDEX test_abc_ids ON test_abc(id,id2);
Run Code Online (Sandbox Code Playgroud)
然后是第二个表,其中 FK 引用第一个表:
create table test_def (
id integer not null,
abc_id integer,
abc_id2 integer,
PRIMARY KEY (id),
FOREIGN KEY (abc_id,abc_id2) references test_abc(id,id2)
);
Run Code Online (Sandbox Code Playgroud)
现在考虑此查询的输出:
SELECT unique_constraint_catalog, unique_constraint_schema, unique_constraint_name
FROM information_schema.referential_constraints r
WHERE r.constraint_name = 'test_def_abc_id_fkey'
----------------------
NULL NULL NULL
Run Code Online (Sandbox Code Playgroud)
所有unique_constraint_*列都有空值。
从Postgres 文档看来这些元列应该包含
包含外键约束引用的唯一或主键约束的 [object] 的名称(始终是当前数据库) …
sql postgresql foreign-keys information-schema database-metadata
是什么之间的区别ALL_TAB_COLUMNS,并ALL_TAB_COLS在甲骨文12C系统表?在我的数据库中,ALL_TAB_COLUMNS的行数比ALL_TAB_COLS略少.
我想查询以下内容:所有表及其列和数据类型
我到目前为止从http://www.firebirdfaq.org/faq174/得到了这个
select f.rdb$relation_name, f.rdb$field_name, f.rdb$field_source
from rdb$relation_fields f
join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name
and r.rdb$view_blr is null
and (r.rdb$system_flag is null or r.rdb$system_flag = 0)
order by 1, f.rdb$field_position
Run Code Online (Sandbox Code Playgroud)
我刚刚添加了上面的代码"f.rdb $ field_source"来向我展示该表上的信息,这应该允许我在此表中找到以下数据类型的数据RDB $ FIELDS
SELECT * from RDB$FIELDS
Run Code Online (Sandbox Code Playgroud)
我想在上面的查询中添加如下内容:
select f.rdb$relation_name, f.rdb$field_name, f.rdb$field_source
from rdb$relation_fields f
join rdb$relations r on f.rdb$relation_name = r.rdb$relation_name
and r.rdb$view_blr is null
and (r.rdb$system_flag is null or r.rdb$system_flag = 0)
order by 1, f.rdb$field_position
Run Code Online (Sandbox Code Playgroud)
再加上以下需要发生:
select a.RDB$FIELD_TYPE from RDB$FIELDS
where …Run Code Online (Sandbox Code Playgroud) 我有这个查询来获取表上的索引列表:
SELECT
ns.nspname as schema_name,
tab.relname as table_name,
cls.relname as index_name,
am.amname as index_type,
idx.indisprimary as is_primary,
idx.indisunique as is_unique
FROM
pg_index idx
INNER JOIN pg_class cls ON cls.oid=idx.indexrelid
INNER JOIN pg_class tab ON tab.oid=idx.indrelid
INNER JOIN pg_am am ON am.oid=cls.relam
INNER JOIN pg_namespace ns on ns.oid=tab.relnamespace
WHERE ns.nspname = @Schema AND tab.relname = @Name
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常。但现在我需要对列列表进行查询,但我无法理解系统视图的工作方式。
具体来说,我正在寻找的是:
理想情况下,我想一次获得给定表的所有索引的上述项目。
请注意,我正在寻找的不仅仅是列名。
我想在SQL Server中找到包含两个特定单独列的所有表.
第一列名称是"LIKE'%A%'"(意思是它包含子字符串"A"),第二列名称是"LIKE'%B%'"(意思是它包含子字符串"B").
我写了以下查询,我想检查它的正确性:
SELECT s.TABLE_NAME
FROM (SELECT COLUMN_NAME, TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%A%'
UNION
SELECT COLUMN_NAME, TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%B%') s
WHERE EXISTS (SELECT COLUMN_NAME, s.TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%A%')
AND EXISTS (SELECT COLUMN_NAME, s.TABLE_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE COLUMN_NAME LIKE '%B%');
Run Code Online (Sandbox Code Playgroud) 如何获取表的列名、数据类型、大小和注释?
我试过
SELECT all_tab.column_name, all_tab.data_type, all_tab.data_length, col_com.COMMENTS
FROM all_tab_columns all_tab
JOIN user_col_comments col_com ON all_tab.TABLE_NAME = col_com.TABLE_NAME
WHERE all_tab.TABLE_NAME='MY_TABLE'
Run Code Online (Sandbox Code Playgroud)
但它没有用。
sql ×4
java ×3
oracle ×3
jdbc ×2
postgresql ×2
firebird ×1
foreign-keys ×1
mysql ×1
nhibernate ×1
ora-00955 ×1
oracle12c ×1
orm ×1
php ×1
procedure ×1
python ×1
resultset ×1
sql-server ×1
sqldatatypes ×1
t-sql ×1
tablecolumn ×1