标签: dml

如何截断外键约束表?

为什么没有一个TRUNCATEmygroup工作?即使ON DELETE CASCADE SET我得到了:

错误1701(42000):无法截断外键约束中引用的表(mytest.instance,CONSTRAINT instance_ibfk_1FOREIGN KEY(GroupID)REFERENCES mytest.mygroup(ID))

drop database mytest;
create database mytest;
use mytest;

CREATE TABLE mygroup (
   ID    INT NOT NULL AUTO_INCREMENT PRIMARY KEY
) ENGINE=InnoDB;

CREATE TABLE instance (
   ID           INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
   GroupID      INT NOT NULL,
   DateTime     DATETIME DEFAULT NULL,

   FOREIGN KEY  (GroupID) REFERENCES mygroup(ID) ON DELETE CASCADE,
   UNIQUE(GroupID)
) ENGINE=InnoDB;
Run Code Online (Sandbox Code Playgroud)

mysql truncate constraints foreign-keys dml

601
推荐指数
9
解决办法
46万
查看次数

什么是DDL和DML

能否帮助我从头开始了解DDL和DML?

sql ddl dml

302
推荐指数
6
解决办法
42万
查看次数

在T-SQL中组合存储过程和查询

如何组合执行存储过程并在常规SQL查询中使用其结果或参数?

例如,我想做类似以下的事情:

-- passing result of SELECT to SP
SELECT a, b FROM t
EXEC my_sp a, b

-- passing result of SP to INSERT    
INSERT INTO t
EXEC my_sp a, b
Run Code Online (Sandbox Code Playgroud)

等等

sql t-sql sql-server stored-procedures dml

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

MySQL 5.5添加外键失败,错误[HY000] [150]和[HY000] [1005]

我试过像这样添加一个外键......

ALTER TABLE OrderLineItem
ADD CONSTRAINT
        FK_OrderLineItem_ShippingType_name FOREIGN KEY
(shippingType)
REFERENCES ShippingType(name);
Run Code Online (Sandbox Code Playgroud)

或者在Mysql 5.5中这样...

alter table OrderLineItem add foreign key 
FK_OrderLineItem_ShippingType (shippingType) references ShippingType(name);
Run Code Online (Sandbox Code Playgroud)

每次我看到以下错误.

[2011-11-18 15:07:04] [HY000] [150]使用外键约束创建表'realtorprint_dev_dev/#sql-7d0_80'失败.引用的表中没有索引,其中引用的列显示为第一列.

[2011-11-18 15:07:04] [HY000] [1005]无法创建表'realtorprint_dev_dev.#sql-7d0_80'(错误号:150)

OrderLineItem.shippingType和ShippingType.name都具有varchar(50)类型,而不是null.ShippingType.name是ShippingType的primaryKey.

以下是关于ShippingType以及OrderLineItem的show create table的结果...

CREATE TABLE `shippingtype` (
  `name` varchar(50) CHARACTER SET latin1 NOT NULL DEFAULT '',
  `description` varchar(255) CHARACTER SET latin1 NOT NULL,
  PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

CREATE TABLE `orderlineitem` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `description` varchar(255) CHARACTER SET latin1 NOT NULL, …
Run Code Online (Sandbox Code Playgroud)

mysql foreign-keys dml

13
推荐指数
2
解决办法
7099
查看次数

MySQL 5.5.30级联触发器无效

出于某种原因,在MySQL 5.5.30机器上,从第二个表中删除行的触发器不再触发第二个表上的删除触发器.

这完全适用于我们的本地MySQL版本5.5.25

我没有找到任何可以解释这种行为的文档,有人可能有同等的问题吗?

这可能是MySQL版本大于5.5.25时出现的错误,也可能是意外启用的"功能".

UPDATE table1 => fires BEFORE UPDATE trigger ON table1
      table1 BEFORE UPDATE TRIGGER executes: DELETE FROM table2 => should fire BEFORE DELETE trigger on table2 ( but doesn't )
            table 2 BEFORE DELETE TRIGGER executes: DELETE FROM table3 (never happens)
Run Code Online (Sandbox Code Playgroud)

好了,我的重现步骤:

数据库

CREATE DATABASE "triggerTest" DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;
Run Code Online (Sandbox Code Playgroud)

CREATE TABLE "table1" (
  "id" int(11) NOT NULL AUTO_INCREMENT,
  "active" tinyint(1) NOT NULL DEFAULT '0',
  "sampleData" varchar(100) COLLATE utf8_unicode_ci NOT NULL DEFAULT '', …
Run Code Online (Sandbox Code Playgroud)

mysql triggers dml

11
推荐指数
1
解决办法
1990
查看次数

PostgreSQL 8.4将所有表的DML权限授予角色

如何在PostgreSQL 8.4中的模式中的所有表上授予DML(SELECT,INSERT,UPDATE,DELETE)?我也希望这笔赠款能够在将来继续创建新的表格.

我已经看过9.0的解决方案,但我坚持使用8.4,因为它随Debian稳定运行.

我已经尝试了以下作为基线,但它不起作用,导致不可避免的"访问关系X被拒绝":

GRANT ALL PRIVILEGES ON DATABASE testdb TO testuser;
Run Code Online (Sandbox Code Playgroud)

我已经通过文档挖掘了,我似乎无法找到合适的解决方案.

postgresql grant dml

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

如何在SQL Server触发器中复制插入的,更新的,已删除的行

如果用户更改了表HelloWorlds,那么我想要"他们做的动作",他们做的时间以及原始行插入的副本HelloWorldsHistory.

由于列长度,我宁愿避免单独的插入,更新和删除操作触发器.

我试过这个:

create trigger [HelloWorlds_After_IUD] on [HelloWorlds]
FOR insert, update, delete
as
if @@rowcount = 0 
return
if exists (select 1 from inserted) and not exists (select 1 from deleted)
begin
insert into HelloWorldHistory (hwh_action, ..long column list..)
select 'INSERT', helloWorld.id, helloWorld.text ... and more from inserted
end
else
    if exists (select 1 from inserted) and exists (select 1 from deleted)
    begin
insert into HelloWorldHistory (hwh_action, ..long column list..)
select 'UPDATE', helloWorld.id, helloWorld.text ... and …
Run Code Online (Sandbox Code Playgroud)

t-sql sql-server triggers dml

9
推荐指数
2
解决办法
3万
查看次数

从Oracle表中选择所有列和常量值

如何选择所有列并在Oracle中添加具有常量值的列?

使用MS SQL Server,我可以使用:

Select *,5 From TableA;
Run Code Online (Sandbox Code Playgroud)

我会得到这个:

column1      column2    5
xx           xx         5
xx           xx         5

sql oracle select dml

8
推荐指数
2
解决办法
3万
查看次数

在Delphi FireDAC中加载数组DML的最快方法

我使用Delphi XE8和FireDAC来加载一个大的SQLite数据库.为此,我使用Array DML执行技术一次有效地插入大量记录,如下所示:

FDQueryAddINDI.SQL.Text := 'insert into indi values ('
  + ':indikey, :hasdata, :gedcomnames, :sex, :birthdate, :died, '
  + ':deathdate, :changed, :eventlinesneedprocessing, :eventlines, '
  + ':famc, :fams, :linkinfo, :todo, :nextreportindi, :firstancestralloop'
  + ')';
FDQueryAddINDI.Params.Bindmode := pbByNumber; {more efficient than by name }
FDQueryAddINDI.Params.ArraySize := MaxParams; { large enough to load all of them } 

NumParams := 0;
repeat
  { the code to determin IndiKey,... is not shown, but goes here }

  FDQueryAddINDI.Params[0].AsStrings[NumParams] := IndiKey;   
  FDQueryAddINDI.Params[1].AsIntegers[NumParams] := HasData;
  FDQueryAddINDI.Params[2].AsStrings[NumParams] := GedcomNames; …
Run Code Online (Sandbox Code Playgroud)

delphi performance dml tcollection firedac

8
推荐指数
1
解决办法
3090
查看次数

DDL,DML和DCL这两个术语的起源是什么?

我熟悉应用于SQL的DDL,DML和DCL的定义.有很多网站和书籍可以定义和解释它们.但似乎没有人给出权威的参考.

我对这些术语的起源感兴趣.SQL发明了吗?他们是否已经在历史上用于其他数据库?是否有其他标准创建它们,它们是否被SQL使用?或者SQL甚至在ISO规范中都使用它们?

一本书表明SQL92包含这些术语,但我无法在线提供的草稿中找到它们.(也许我必须购买最终的SQL92 ISO规范才能确定.)SQL:1999切换到不同的分类系统.

(我很好奇的一个原因是,如果这些是非SQL发明的一般行业术语,那么继续使用它们并不一定是不正确的,这是对新SQL分类的补充.)

任何人都可以提供有关这些术语起源的更多信息,以及对最初可能定义它们的任何标准或规范的权威参考吗?

sql database ddl acronym dml

8
推荐指数
1
解决办法
836
查看次数