标签: ddl

仅当用户存在时如何执行“DROP OWNED BY”?

我正在尝试编写一个 bash 脚本来创建 Postgres 数据库,以及访问该数据库的用户和用户权限。我正在使用 Postgres 9.6。我有以下...

create_db_command="SELECT 'CREATE DATABASE $DB_NAME' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$DB_NAME')\gexec"
drop_owned_by_command="DROP OWNED BY $DB_USER;"
drop_role_command="DROP ROLE IF EXISTS $DB_USER;"
create_user_command="create user $DB_USER with encrypted password '$DB_PASS';"
grant_privs_command="grant all privileges on database $DB_NAME to $DB_USER;"

PGPASSWORD=$ROOT_PASSWORD
# This command creates the db if it doesn't already exist
echo "SELECT 'CREATE DATABASE $DB_NAME' WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$DB_NAME')\gexec" | psql -U$PG_USER
psql -U$PG_USER $DB_NAME -c "$drop_owned_by_command" …
Run Code Online (Sandbox Code Playgroud)

postgresql privileges ddl roles psql

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

将 postgres 列设置为默认值不为空而不更新

有没有一种方法可以not null在一个语句中向列添加约束并用默认值替换所有现有的空值?

alter table t
alter column c set default 0,
alter column c set not null;
Run Code Online (Sandbox Code Playgroud)

似乎不起作用,给出错误:

column "c" contains null values
Run Code Online (Sandbox Code Playgroud)

sql postgresql ddl alter-table

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

使用SQL Server Express进行开发时如何管理版本控制?

我正在开发机器上使用SQL Server Express开发一个网站.我的网络托管公司正在为我提供SQL Server 2005.

目前,我所拥有的是我开发的数据库和实时服务器上的数据库.我没有原始脚本来生成模式,但我可以单独或为整个数据库自动生成创建脚本.

我现在将我的代码放入源代码控制中,我想知道如何管理我的数据库架构.我该怎么做?创建命令?改变脚本?

目前数据库非常小,维护这两个数据库并不困难,但我担心会继续前进,但它会失控.在部署新代码时,您是否有任何关于使实时数据库同步的提示?

编辑关于什么应该进入源代码控制的任何想法?DDL脚本应该在这里吗?

database version-control ddl sql-server-2005-express

4
推荐指数
1
解决办法
668
查看次数

如何通过SqlCeCommand对象禁用sql server compact edition中的所有表索引?

我正在尝试在SqlCe数据库(版本3.5,哦和使用C#3)中进行大量的批量插入.我已经尝试了各种方法(表适配器插入,准备参数化查询,sqlceresultset插入等).正如我在许多网站上看到的那样,最快的时间是在表直接模式下使用SqlCeResultSet对象.

我想通过在执行插入之前禁用必要表上的所有索引来进一步提高速度(之后我会重建它们).我有一个问题让ALTER INDEX语句工作(以前从未使用它,所以我确定我忽略了一些简单的事情).

基本上我已经创建了一个SqlCeCommandObject并以下面的方式设置了一个alter语句(Connection对象已经设置并且已经打开等):

.
.
.
SqlCeCommand disableIndexCommand = Connection.CreateCommand();
disableIndexCommand.CommandText = "ALTER INDEX ALL ON ItemMaster DISABLE";
disableIndexCommand.ExecuteNonQuery();
.
.
.
Run Code Online (Sandbox Code Playgroud)

当我尝试运行此代码时,我收到以下错误:

解析查询时出错.[令牌行号= 1,令牌行偏移= 7,令牌错误= INDEX]

听起来好像它不理解alter语句中的INDEX关键字.这在SqlCe中不受支持吗?

谢谢

[更新] - 我已经尝试过其他DDL语句(如DROP INDEX,CREATE INDEX),我似乎无法让它们中的任何一个工作?就DDL语句而言,我一直在寻找寻找SSCE中支持的内容和内容的列表.没运气.有没有人知道这方面的任何好资源.关于sqlce compact版本3.5的MS文档已经相当无用我必须说...

c# indexing ddl sql-server-ce

4
推荐指数
1
解决办法
4194
查看次数

缩小oracle中的一列

假设我有一个具有以下定义的表

create table dummy (col1 number(9) not null)
Run Code Online (Sandbox Code Playgroud)

这个dummy.col1中的所有值都是7位长.现在我想使用alter命令将此列的长度从9 - 7减少.Oracle给出了错误,即要修改的列必须为空以降低精度或比例.说得通.

我想问一下是否有任何减少列大小的工作?

  • 我无法删除列中的值.
  • 我无法将此列中的值复制到另一列,因为它有数万亿个数据.

oracle ddl alter-table

4
推荐指数
1
解决办法
3857
查看次数

使用带有[template],[encoding],[owner]和.sql文件的批处理文件创建Postgres数据库

我想使用批处理文件创建Postgres数据库.现在这样做的正常方法如下:

"C:\ Program Files\PostgreSQL\9.0\bin\createdb.exe"-U Myadmin MydatAbseName

上面的脚本使用默认数据库参数创建数据库.但是,我想创建一个包含以下参数的数据库,如下所示:

   WITH OWNER = Myadmin 
   TEMPLATE = template0 
   ENCODING = 'SQL_ASCII'
   TABLESPACE = pg_default
   LC_COLLATE = 'C'
   LC_CTYPE = 'C'
   CONNECTION LIMIT = -1;
Run Code Online (Sandbox Code Playgroud)

请告诉我如何使用批处理文件使用上述参数创建数据库.

另请告诉我如何使用.sql文件执行相同的操作,例如此命令行:

"C:\Program Files\PostgreSQL\9.0\bin\createdb.exe" -U Myadmin -f C:\createDB.sql;
Run Code Online (Sandbox Code Playgroud)

database postgresql ddl database-connection batch-file

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

在创建sqlite3表后,将ON DELETE CASCADE行为添加到其中

是否可以ON DELETE CASCADE在创建表后添加到表中?

我的架构如下:

CREATE TABLE skills(name varchar, skill varchar, level int, foreign key(name) references runners(name), primary key(name, skill));

如果删除了外键,我想级联.

sqlite ddl

4
推荐指数
1
解决办法
1654
查看次数

如何通过SQL将计算列添加到Access

如何将计算列添加到SQL中的Access表?

我知道我可以像这样添加一个带有SQL的列:

ALTER TABLE Clients ADD COLUMN AccountDate TEXT(60)
Run Code Online (Sandbox Code Playgroud)

谢谢,Vítor

sql ddl ms-access access-vba

4
推荐指数
1
解决办法
5321
查看次数

PostgreSQL中的ALTER TRIGGER命令

我在Postgres 9.3数据库中有一个触发器,其定义如下:

CREATE TRIGGER trig
  AFTER UPDATE OR DELETE
  ON tab2
  FOR EACH ROW
  EXECUTE PROCEDURE proc3();
Run Code Online (Sandbox Code Playgroud)

我想将触发器更改为:

AFTER INSERT OR UPDATE OR DELETE
Run Code Online (Sandbox Code Playgroud)

手册上ALTER TRIGGER没有说明如何做。

我想更改触发器而不丢弃它。那可能吗?

sql postgresql ddl triggers

4
推荐指数
1
解决办法
1988
查看次数

如何在Access 2013中运行DDL?

我需要运行DDL脚本来创建表,以将数据导入Microsoft Access。我已经制作了DDL脚本,并且已经在Oracle SQL Developer中工作,但是我也希望在Access中也可以使用。

我似乎找不到简单的方法来做到这一点。看起来Access的早期版本具有此功能。

ddl ms-access ms-access-2013

4
推荐指数
1
解决办法
1594
查看次数