标签: ddl

添加约束是DDL或DML

在 sql server 中添加约束属于 DML 或 DDL 哪一类?

sql-server ddl constraints dml

5
推荐指数
1
解决办法
1820
查看次数

Java JDBC:更改表

我希望对此表进行以下修改:

添加:状态列 (varchar(20)) 日期列(时间戳)

我不确定该怎么做

String createTable = "Create table aircraft ("
                        +"aircraftNumber int,"
                        +"airLineCompany varchar(20),"
                        +"departureAirport varchar (20),"
                        +"fuelPercentage int,"
                        +"passengerCount int);";
Run Code Online (Sandbox Code Playgroud)

java mysql sql ddl jdbc

5
推荐指数
1
解决办法
2万
查看次数

删除物化视图时遇到错误

我正在尝试使用以下命令删除物化视图-

DROP  MATERIALIZED VIEW MVIEW_TB_NBN_DAILY
Run Code Online (Sandbox Code Playgroud)

出现如下图所示的错误。

在此输入图像描述

oracle ddl

5
推荐指数
1
解决办法
3956
查看次数

Aws Athena - 重命名列名称

我正在尝试更改 AWS Athena 表中的列名称。从old_namenew_name

普通的DDL命令不会影响表(它们无法执行)。

是否可以更改列名而不从头开始删除并重新创建表?

ddl hive amazon-web-services amazon-athena

5
推荐指数
1
解决办法
1万
查看次数

如何将 CTE 输出插入 Oracle 中的临时表?

在 Oracle 中,我尝试使用下面的代码将 CTE 的输出插入到临时表中,但出现错误。我不想提前创建临时表,它应该使用 CTE 中的列名和数据类型动态创建。

with cte as (
select ORDER_ID, STATUS_ID, CALL_DATE, SHIP_DATE,
       UPDATE_USER_ID,  UPDATE_TIMESTAMP,
       row_number() over(partition by ORDER_ID order by update_timestamp desc) as rowno 
FROM ORDER_HISTORY
where ORDER_ID in (1001,1002, 1003)
)
create table temp_recent_order as
select * from cte where rowno=1
Run Code Online (Sandbox Code Playgroud)

sql oracle ddl common-table-expression

5
推荐指数
1
解决办法
2169
查看次数

SQL SERVER 和 SET ANSI_NULLS ON、SET QUOTED_IDENTIFIER ON

所以我在创建脚本时一直盲目地使用ansi_nulls on、quoted_identifier on,因为sqlserver在编写对象脚本时会自动生成它们。

我真的没有时间关心这些琐碎的废话:-)但我想必须提出这些问题。

鉴于这些是推荐的设置,是否有一个选项可以设置(a)每个数据库和(b)每个服务器,以便它们默认情况下始终处于打开状态,而不是通过单独的脚本?

如果是这样,如何/在哪里可以查看当前的默认设置?

sql sql-server ddl sql-scripts

5
推荐指数
2
解决办法
1万
查看次数

当包装在事务中时,Mysql DDL 查询陷入等待表元数据锁状态

这是一种随机行为(重新启动 mysql 会话后不会再次发生),当我将 DDL 查询包装在事务 T1 中,同时我使用select同一个表上的查询启动另一个事务 T2 时,DDL 查询卡在等待表中预期的元数据锁定,任何其他选择查询都会等待 DDL 查询完成。但是提交 T2 后,DDL 应该获得元数据锁并完成,但它仍然等待表元数据锁状态。

连接1查询​​:

mysql> begin;                            
Query OK, 0 rows affected (0.00 sec)

mysql> ALTER TABLE merchants ADD COLUMN temp6 varchar(255);
Run Code Online (Sandbox Code Playgroud)

连接2查询:

mysql> begin;                            
Query OK, 0 rows affected (0.00 sec)

mysql> select * from merchants where account_id=null;
Empty set (0.00 sec)

mysql> commit;
Query OK, 0 rows affected (0.00 sec)
Run Code Online (Sandbox Code Playgroud)

查询的顺序是:

  1. 连接1:开始;
  2. 连接2:开始;
  3. 连接2:从account_id=null的商户中选择*;
  4. 连接 1:ALTER TABLE 商家 ADD COLUMN temp6 varchar(255);
  5. 连接2:提交;
Server version: …
Run Code Online (Sandbox Code Playgroud)

mysql sql database ddl alter-table

5
推荐指数
1
解决办法
5216
查看次数

Oracle 18c - REGEXP_REPLACE 的替代方案

迁移到Oracle 18c企业版后,无法创建基于函数的索引。

这是我的索引 DDL:

CREATE INDEX my_index ON my_table
(UPPER( REGEXP_REPLACE ("DEPT_NUM",'[^[:alnum:]]',NULL,1,0)))
TABLESPACE my_tbspace
PCTFREE    10
INITRANS   2
MAXTRANS   255
STORAGE    (
            INITIAL          64K
            MINEXTENTS       1
            MAXEXTENTS       UNLIMITED
            PCTINCREASE      0
            BUFFER_POOL      DEFAULT
           );
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

ORA-01743: only pure functions can be indexed
01743. 00000 -  "only pure functions can be indexed"
*Cause:    The indexed function uses SYSDATE or the user environment.
*Action:   PL/SQL functions must be pure (RNDS, RNPS, WNDS, WNPS).  SQL
           expressions must not use SYSDATE, USER, USERENV(), or anything …
Run Code Online (Sandbox Code Playgroud)

regex oracle indexing ddl oracle18c

5
推荐指数
2
解决办法
4352
查看次数

SQLAlchemy:部分指定的关系

我试图用 SQLAlchemy 描述遗留 SQL 模式中存在的关系。我将架构翻译为:

class Lang(Base):
    __tablename__ = "tblLang"
    id = Column("ID", Integer, primary_key=True)
    # ...

class ItemName(Base):
    __tablename__ = "tblItemName"
    # ItemName has a composite primary key
    id = Column("ID", Integer, primary_key=True)
    lang_id = Column("Lang", Integer, ForeignKey("Lang.id"), primary_key=True)
    name = Column("Name", String)

class Item(Base):
    __tablename__ = "tblItem"
    id = Column("id", Integer, primary_key=True)
    inventory = Column("Inventory", Integer)
    # item_name_id specifies only part of the table
    # relationship
    item_name_id = Column("ItemNameID", Integer, ForeignKey("tblItemName.ID"))
    # lang_id should come from outside the …
Run Code Online (Sandbox Code Playgroud)

python ddl sqlalchemy foreign-keys

5
推荐指数
1
解决办法
455
查看次数

MySQL 8.0 Alter Table Algorithm=INSTANT 未按预期工作(需要 40 秒)

MySQL 8.0 - 正如MySQL 官方文档MySQL 服务器团队中所述,Alter table with Algorithm=INSTANT 会立即添加列,而不需要任何锁定。

但是,结果不同了。

测试设置- 具有 40M 行的表。在表上读取和写入 (1000 TPS)。表架构非常简单。

field,type,null,key,default,extra
id,bigint(20),NO,PRI,,auto_increment
t_a,bigint(20),NO,MUL,,""
t_b,bigint(20),NO,MUL,,""
t_c,int(11),NO,"",1,""
Run Code Online (Sandbox Code Playgroud)

基础设施: AWS RDS MySQL 8 - 引擎版本 - 8.0.17

测试用例: 向表中添加新列。

陈述:

alter table table_name add column_name int, algorithm=instant;
Run Code Online (Sandbox Code Playgroud)

结果:

mysql> alter table test_table add test_column int, algorithm=instant;
Query OK, 0 rows affected (36.06 sec)
Records: 0  Duplicates: 0  Warnings: 0
Run Code Online (Sandbox Code Playgroud)

花了大约 40 秒。它在40 秒内阻止了读取和写入

这是预期的吗?我有什么遗漏的吗?

mysql ddl innodb alter amazon-rds

5
推荐指数
0
解决办法
1487
查看次数