我正在编写一些脚本来更新大量的Access表.我想为每个都添加一个列,该列有一个名为"date_created"的字段,该字段是创建记录时的时间戳.通过表视图执行此操作非常简单,只需设置DefaultValue = now()即可.但是,我如何在sql中完成此操作?
这是我目前对已有列的表的尝试.此示例使用"tblLogs".
ALTER TABLE tblLogs ALTER COLUMN date_created DEFAULT now()
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助!
更新 - 有没有办法在VBA中执行此操作?
更新2 - 测试所有答案和以下onedaywhen是最短和最准确的
CurrentProject.Connection.Execute _
"ALTER TABLE tblLogs ALTER date_created DATETIME DEFAULT NOW() NOT NULL;"
Run Code Online (Sandbox Code Playgroud) 我需要在Oracle数据库上执行一堆(最多~1000000)sql语句.这些语句应该在结尾处产生引用一致的状态,并且如果发生错误,应该回滚所有语句.这些陈述不是以参考顺序出现的.因此,如果启用了外键约束,则其中一个语句可能会导致外键违规,即使这种违规也将通过稍后将执行的语句修复.
我尝试首先禁用外键并在执行所有语句后启用它们.我认为当有实际的外键违规时我能够回滚.我错了,我发现Oracle中的每个DDL语句都以提交开始,因此无法以这种方式回滚语句.这是我的禁用外键的脚本:
begin
for i in (select constraint_name, table_name from user_constraints
where constraint_type ='R' and status = 'ENABLED')
LOOP execute immediate 'alter table '||i.table_name||' disable constraint
'||i.constraint_name||'';
end loop;
end;
Run Code Online (Sandbox Code Playgroud)
经过一些研究,我发现建议在自治事务中执行DDL语句,就像在这种情况下一样.所以我试图在自治事务中运行DDL语句.这导致以下错误:
ORA-00054:资源繁忙并且使用NOWAIT指定获取
我猜这是因为主事务仍然对表有DDL锁定.
我在这里做错了什么,还是有其他办法让这个场景有效?
使用Oracle时,您可以创建一个禁用的触发器,在触发器主体之前指定单词DISABLE.如何在Sql Server中实现相同的效果?
我知道我可以用它来创建DDL创建触发器;
CREATE OR REPLACE TRIGGER
create_table_trigger
AFTER CREATE ON SCHEMA
DECLARE
BEGIN
END;
Run Code Online (Sandbox Code Playgroud)
问题是这个触发器会在"创建序列"之类的DDL上运行; 我怎样才能为'创建表'DDL执行此操作?
是否有针对hive ddl脚本的文件扩展名的公认约定?我纯粹是在要求代码组织的目的,所以当我将脚本保存在我的存储库中时,很明显脚本在Hive中.
我在magento mysql安装或升级脚本中看到过,他们使用以下命令添加列:
$installer->getTable('catalog/eav_attribute'),
'tooltip',
array(
'type' => Varien_Db_Ddl_Table::TYPE_TEXT,
'nullable' => true,
'comment' => 'Tooltip'
)
Run Code Online (Sandbox Code Playgroud)
我想知道什么是Varien_Db_Ddl_Table :: TYPE_TEXT?如果我想在mysql表中手动添加工具提示列,那么我应该在类型部分中使用什么?它只是' TEXT '吗?
在Postgres 9.3表中,我有一个integer主键,自动序列递增,但我达到了最大值integer.如何将其转换integer为serial?
我试过了:
ALTER TABLE my_table ALTER COLUMN id SET DATA TYPE bigint;
Run Code Online (Sandbox Code Playgroud)
但是相同的数据类型不适serial用于bigint.好像我无法转换为serial?
我想使用带有JPA - Hibernate 5.0.11的spring boot v1.4.3生成create和drop ddl脚本.
我找到的大多数答案都使用了javax.persistence.schema-generation属性.例如/sf/answers/2587649361/
这种方法的问题是它输出没有分隔符的sql语句.例如
create table ... (...)
create table ... (...)
Run Code Online (Sandbox Code Playgroud)
我希望它用分隔符输出语句 ;
create table ... (...);
create table ... (...);
Run Code Online (Sandbox Code Playgroud)
但我找不到任何javax.persistence.schema-generation属性来配置它.
所以我想使用SchemaExportfrom hibernate,因为你可以设置delimiter属性.但要创建一个SchemaExport我需要一个MetadataImplementor(非删除的api).
我无法弄清楚如何MetadataImplementor从春季靴子中获得一个.
有没有人知道是否有
javax.persistence.schema-generation用于定义分隔符的属性SchemaExport(获取依赖项)这是您可以使用的一些代码
@SpringBootApplication
@ComponentScan(basePackageClasses = Application.class)
@EntityScan(basePackageClasses = User.class)
public class Application {
@Bean
public ApplicationRunner getApplicationRunner() {
return new ApplicationRunner() {
public void run(ApplicationArguments args) throws Exception …Run Code Online (Sandbox Code Playgroud) 我有一个package A,它package B在同一个模式中使用另一个变量和过程.现在我想转移package A到新架构.我应该授予什么特权的new schema使用package B同样的方式?什么是授权声明?
t_user我创建了一个名为into的外部数据包装表mySchema。
IMPORT FOREIGN SCHEMA public LIMIT TO (t_user)
FROM SERVER myServer INTO mySchema;
Run Code Online (Sandbox Code Playgroud)这边添加了一些列,myServer但是t_user外表没有相应更新。
我尝试删除外部表t_user,但它被我的视图和物化视图使用t_user,因此删除失败。
关于如何更新此表有什么想法吗?
ddl ×10
sql ×4
oracle ×3
postgresql ×2
triggers ×2
constraints ×1
database ×1
hibernate ×1
hive ×1
magento ×1
ms-access ×1
mysql ×1
ora-00054 ×1
php ×1
spring ×1
spring-boot ×1
sql-server ×1
transactions ×1
types ×1
vba ×1