我正在尝试编写一个 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) 有没有一种方法可以not null在一个语句中向列添加约束并用默认值替换所有现有的空值?
alter table t
alter column c set default 0,
alter column c set not null;
Run Code Online (Sandbox Code Playgroud)
似乎不起作用,给出错误:
Run Code Online (Sandbox Code Playgroud)column "c" contains null values
我正在开发机器上使用SQL Server Express开发一个网站.我的网络托管公司正在为我提供SQL Server 2005.
目前,我所拥有的是我开发的数据库和实时服务器上的数据库.我没有原始脚本来生成模式,但我可以单独或为整个数据库自动生成创建脚本.
我现在将我的代码放入源代码控制中,我想知道如何管理我的数据库架构.我该怎么做?创建命令?改变脚本?
目前数据库非常小,维护这两个数据库并不困难,但我担心会继续前进,但它会失控.在部署新代码时,您是否有任何关于使实时数据库同步的提示?
编辑关于什么应该进入源代码控制的任何想法?DDL脚本应该在这里吗?
我正在尝试在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文档已经相当无用我必须说...
假设我有一个具有以下定义的表
create table dummy (col1 number(9) not null)
Run Code Online (Sandbox Code Playgroud)
这个dummy.col1中的所有值都是7位长.现在我想使用alter命令将此列的长度从9 - 7减少.Oracle给出了错误,即要修改的列必须为空以降低精度或比例.说得通.
我想问一下是否有任何减少列大小的工作?
我想使用批处理文件创建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) 是否可以ON DELETE CASCADE在创建表后添加到表中?
我的架构如下:
CREATE TABLE skills(name varchar, skill varchar, level int, foreign key(name) references runners(name), primary key(name, skill));
如果删除了外键,我想级联.
如何将计算列添加到SQL中的Access表?
我知道我可以像这样添加一个带有SQL的列:
ALTER TABLE Clients ADD COLUMN AccountDate TEXT(60)
Run Code Online (Sandbox Code Playgroud)
谢谢,Vítor
我在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没有说明如何做。
我想更改触发器而不丢弃它。那可能吗?
我需要运行DDL脚本来创建表,以将数据导入Microsoft Access。我已经制作了DDL脚本,并且已经在Oracle SQL Developer中工作,但是我也希望在Access中也可以使用。
我似乎找不到简单的方法来做到这一点。看起来Access的早期版本具有此功能。
ddl ×10
postgresql ×4
sql ×3
alter-table ×2
database ×2
ms-access ×2
access-vba ×1
batch-file ×1
c# ×1
indexing ×1
oracle ×1
privileges ×1
psql ×1
roles ×1
sqlite ×1
triggers ×1