当我在MySQL中执行此命令时:
SET FOREIGN_KEY_CHECKS=0;
Run Code Online (Sandbox Code Playgroud)
它会影响整个引擎还是只是我当前的交易?
我需要DELETE在MySQL表上为指定的sid复制行.
如何使用SQL查询执行此操作?
DELETE (DUPLICATED TITLES) FROM table WHERE SID = "1"
Run Code Online (Sandbox Code Playgroud)
像这样的东西,但我不知道该怎么做.
我正在与:
我有以下顺序
DROP TABLE IF EXISTS invoicedetail;
DROP TABLE IF EXISTS invoiceheader;
DROP TABLE IF EXISTS product;
Run Code Online (Sandbox Code Playgroud)
它通过Java(JDBC)失败并通过MySQLWorkBench失败,错误消息是关于FK Child约束(我没有确切的错误消息),通过谷歌我做了一个研究,我发现了两次相同的有效解
好吧,我做了以下事情:
SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS invoicedetail;
DROP TABLE IF EXISTS invoiceheader;
DROP TABLE IF EXISTS product;
SET FOREIGN_KEY_CHECKS=1;
Run Code Online (Sandbox Code Playgroud)
它再次起作用,只是玩,我试图再次执行
DROP TABLE IF EXISTS invoicedetail;
DROP TABLE IF EXISTS invoiceheader;
DROP TABLE IF EXISTS product;
Run Code Online (Sandbox Code Playgroud)
确保SELECT @@FOREIGN_KEY_CHECKS;返回1
那么原始的错误消息不会再出现.
我再次对谷歌进行了研究,发现了以下内容:
它说: It is session-based
好吧,即使在:
以下create语句显示了我的一个MariaDB表的当前结构.
CREATE TABLE `councilor` (
`id` BIGINT(20) NOT NULL AUTO_INCREMENT,
`user` BIGINT(20) NOT NULL,
`council` INT(11) NOT NULL,
`role` CHAR(50) NOT NULL DEFAULT 'member' COLLATE 'utf8_persian_ci',
`cDate` TIMESTAMP NULL DEFAULT CURRENT_TIMESTAMP,
`uDate` TIMESTAMP NULL DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP,
`startDate` DATETIME NULL DEFAULT NULL,
`endDate` DATETIME NULL DEFAULT NULL,
`responsibility` VARCHAR(255) NULL DEFAULT NULL COLLATE 'utf8_persian_ci',
`details` TEXT NULL COLLATE 'utf8_persian_ci',
PRIMARY KEY (`id`),
UNIQUE INDEX `userId_councilId` (`user`, `council`),
INDEX `council_user_council_foreign` (`council`)
)
COLLATE='utf8_persian_ci'
ENGINE=InnoDB
ROW_FORMAT=COMPACT
AUTO_INCREMENT=11;
Run Code Online (Sandbox Code Playgroud)
我需要删除唯一索引,但尝试删除两个键中的任何一个失败.
ALTER TABLE …Run Code Online (Sandbox Code Playgroud) office我想更改一个名为 person 的表,并想使用table添加外键
我正在使用的查询是
ALTER TABLE person
ADD CONSTRAINT person_Office_FK
FOREIGN KEY ( Office_id )
REFERENCES Office ( Office_id ) ;
Run Code Online (Sandbox Code Playgroud)
表office大约有 500,000 行,表person大约有 500 万行
这个查询花费了很长时间,我不确定发生了什么。
删除它们的任何记录都会报告如下错误:
错误1451(23000):无法删除或更新父行:外键约束失败
如何克服这个问题?
我有一个包含四个表的数据库。图中的关系架构如下:

以下是这些行:

现在,我正在尝试删除具有所有者ID的所有者OW1。由于id是所有者表中的主键,而其他表中的外键则不允许我删除该行。这是我尝试的SQL:
delete from owners
where ownerid = 'OW1' and petid = 'PT1'
Run Code Online (Sandbox Code Playgroud)
它返回:
ORA-02292: integrity constraint (TEST_1.ADDRESSES_OWNERS_FK) violated - child record found
而且我不允许在关系图中将删除规则设置为“ CASCADE”。请帮忙 :(
我正在尝试从MySQL数据库中的_id 中删除Auto_Increment。但是,这是表的内容,当我使用此命令时columncolumnprimary key
ALTER TABLE Profile
MODIFY _id INT PRIMARY KEY NOT NULL
Run Code Online (Sandbox Code Playgroud)
我收到一个错误,告诉我我不能这样做,因为还有其他表引用了primary key.
因此,我的问题是:有没有办法解决这个问题?
我知道我可以像这样导入数据库转储:
mysql -u {{username}} -p {{target_database}} < myDump.sql
Run Code Online (Sandbox Code Playgroud)
例如
mysql -u root -p theDatabase < myDump.sql
Run Code Online (Sandbox Code Playgroud)
但是如何在关闭外键检查的情况下导入数据库?
我在 mysql 帮助中搜索了有用的参数,但没有找到:
mysql --help | findstr "foreign"
Run Code Online (Sandbox Code Playgroud)
什么都不返回
我有这两个表,并且已经有一些数据。
CREATE TABLE `system_user_data` (
`id_user` bigint(20) NOT NULL AUTO_INCREMENT,
`user_login` varchar(15) DEFAULT NULL,
PRIMARY KEY (`id_user`)
) ENGINE=InnoDB AUTO_INCREMENT=120 DEFAULT CHARSET=utf8;
CREATE TABLE `system_user_tokens` (
`id_token` bigint(20) NOT NULL AUTO_INCREMENT,
`token_user` bigint(20) DEFAULT NULL,
`token_token` varchar(20) DEFAULT NULL,
`token_createdate` date DEFAULT NULL,
PRIMARY KEY (`id_token`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;
Run Code Online (Sandbox Code Playgroud)
当我尝试添加外键token_user = id_user时,出现错误。没有任何数据时,它正在工作。
alter table system_user_tokens add foreign key (token_user) references system_user_data (id_user);
ERROR 1452 (23000): Cannot add or update a child row: a foreign key constraint fails (`name`.`#sql-1b44_727`, …Run Code Online (Sandbox Code Playgroud)