我有一个带有userid和username列的用户表,两者都是唯一的.
介于userid和之间username,哪个更好用作外键?为什么?
我的老板想要使用字符串,那可以吗?
ALTER TABLE testTable ADD column1 NUMBER(1) DEFAULT 0 NOT NULL AFTER column2;
Run Code Online (Sandbox Code Playgroud)
为什么我也不能在Oracle中使用mySql语法?以上命令适用于MySql.你能给我一个有效的等价物吗?
Error report:
SQL Error: ORA-01735: invalid ALTER TABLE option
01735. 00000 - "invalid ALTER TABLE option"
Run Code Online (Sandbox Code Playgroud)
我问是否有任何方法可以在我提供的Oracle命令中使用after子句?
有些人喜欢用简单的文本方式描述他们的数据库结构,而不是使用CREATE TABLE语句.一些例子:
你知道任何将这种速记符号转换为实际SQL语句的软件吗?
我有几个我想在create table之后运行的自定义DDL语句:
update_function = DDL("""
CREATE OR REPLACE FUNCTION update_timestamp()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$ language 'pgplsql';
""")
update_trigger = DDL("""
CREATE TRIGGER update %(table)s_timestamp BEFORE UPDATE
ON %(table)s FOR EACH ROW EXECUTE PROCEDURE update_timestamp();
""")
Run Code Online (Sandbox Code Playgroud)
而且我像这样附上他们:
event.listen(Session.__table__, 'after_create', update_function)
event.listen(Session.__table__, 'after_create', update_trigger)
Run Code Online (Sandbox Code Playgroud)
当我这样做时create_all,我得到了我期望的SQL:
CREATE OR REPLACE FUNCTION update_timestamp()
RETURNS TRIGGER AS $$
BEGIN
NEW.updated_at = now();
RETURN NEW;
END;
$$ language 'pgplsql';
CREATE TRIGGER update session_timestamp BEFORE UPDATE
ON session …Run Code Online (Sandbox Code Playgroud) 表:客户
ID NAME DATATYPE
NUMBER VARCHAR2(100) CLOB
Run Code Online (Sandbox Code Playgroud)
我想将DATA列更改CLOB为`VARCHAR2(1000)
我曾经尝试ALTER TABLE customers MODIFY DATA VARCHAR2 (1000)也
ALTER TABLE customers MODIFY (DATA VARCHAR2 (1000))
也
alter table customers modify
(data VARCHAR2(4000))
Run Code Online (Sandbox Code Playgroud)
如果数据类型不是clob但通常是有效的,ORA-22859因为我使用的是oracle toad/apex.
在我编写之前,是否有用于操作数据库的Java API.就像一个面向对象的包装器java.sql.DatabaseMetaData,支持类似的东西Schema.createTable(name, columns)?
显然,正确的SQL语句应该在后台基于正在使用的DB执行.
我对用于执行DDL语句的API特别感兴趣.
我是Hibernate/JPA的新手,我坚持认为是最后一步.我在我的MySQL实例中创建了一个模式,并希望从我创建的JPA实体中为模式生成表.我在eclipse"从实体生成表"中的JPA工具中有一个选项但是这给了我一条消息"通用平台不支持从实体生成表.是否需要使用插件或工具来使其工作?
我想让持久性提供程序(EclipseLink 2.5.0)使用持久性单元属性"javax.persistence.schema-generation.create-script-source"和一个有效的SQL-自动在已存在的数据库中创建表. DDL脚本.
persistence.xml中:
<property name="javax.persistence.schema-generation.create-script-source" value="data/ddl.sql"/>
Run Code Online (Sandbox Code Playgroud)
ddl.sql:
USE myDatabase;
CREATE TABLE MyTable (
id INTEGER NOT NULL AUTO_INCREMENT,
myColumn VARCHAR(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE = InnoDB DEFAULT CHARACTER SET = utf8 DEFAULT COLLATE = utf8_bin;
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
[EL Warning]: 2014-02-12 13:31:44.778--ServerSession(768298666)--Thread(Thread[main,5,main])--Local Exception Stack:
Exception [EclipseLink-4002] (Eclipse Persistence Services - 2.5.0.v20130507-3faac2b): org.eclipse.persistence.exceptions.DatabaseException
Internal Exception: com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to …Run Code Online (Sandbox Code Playgroud) 互联网上有很多关于如何使用 sql 脚本将表导入 Draw.io 上的 ER 图表的资源。
例如这里(但我通过谷歌搜索找到了大量资源):
https://desk.draw.io/support/solutions/articles/16000082007-use-the-sql-plugin-to-create-an-entity-relationship-diagram (请参阅段落“从 SQL 代码创建 ER 图”)
我找不到任何相反方向的东西。是否可以从通过 Draw.io 创建的 ER 图创建 DDL 脚本?
(插件?导出为 xml 并在其他工具中导入?还有其他什么...)
我正在处理供应商以 Draw.io 格式提供的 ER 图。我想避免手写所有 DDL...(我的情况是 Oracle 12)
我尝试将 null 设置为如下所示的列。
ALTER TABLE myschema.table ALTER COLUMN (test_id,type) SET NOT NULL;
但它返回语法错误,例如 Syntax error at or near Line 3, Position 47
有没有适当的方法来实现这一目标?
如果有人有意见请告诉我。
谢谢
ddl ×10
sql ×6
mysql ×3
alter-table ×2
oracle ×2
postgresql ×2
alembic ×1
clob ×1
database ×1
draw.io ×1
eclipselink ×1
erd ×1
foreign-keys ×1
hibernate ×1
java ×1
jpa ×1
jpa-2.0 ×1
newline ×1
oracle11g ×1
shorthand ×1
sqlalchemy ×1
varchar2 ×1