- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我读过一些确实提出同样问题的帖子,但我似乎无法弄清楚我的代码是否错误。我正在尝试遵循 Udemy for Java Spring 教程,但我尝试自己构建一些东西并添加额外的功能,以便更好地了解我正在学习的内容。我用 2 个表设置了下面的小数据库。
users
表是包含基本博客系统上的用户信息的表。 posts
表包含与用户关联的博客文章列表。
如果我理解正确,这将生成一对多关系,每个用户都有多个帖子。为了将帖子与用户联系起来,我使用 posts
表中的字段 author
设置了外键,引用了 posts
表中的 id
字段。 用户
表。我还希望能够删除用户,但仍保留其所有帖子。我怎样才能实现这个目标?
现在我的应用程序以相反的方式工作,即它可以很好地删除帖子并且用户不受影响。我怎样才能反过来做到这一点?
我组织表格的方式正确吗?另外,我不一定想使用 SET FOREIGN_KEY_CHECKS=0 因为我知道这一点。如果foreign_key_checks被禁用,它可能会导致进一步的问题,对吗?当然,假设我的应用程序仅限于这两个表,我应该能够将检查设置为 0 以便使用它,但是,如果我要将其扩展或添加其他功能,这可能会导致问题(对吗?):D
PS - 我不会添加 Java 代码,因为它现在不相关,因为这只是一个数据库错误,被抛出了:(
drop table if exists `users`;
CREATE TABLE `users` (
`id` int not null auto_increment,
`username` varchar(50) NOT NULL,
`display_name` varchar(50) NOT NULL,
`first_name` varchar(255) NOT NULL,
`last_name` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`password` char(255) NOT NULL,
PRIMARY KEY (`id`),
KEY usr_id (`id`)
) ENGINE=InnoDB CHARSET=latin1 auto_increment=1 DEFAULT;
drop table if EXISTS `posts`;
CREATE TABLE `posts` (
`id` int unsigned NOT NULL auto_increment,
`title` varchar(255),
`author` int,
`date` datetime NOT NULL,
`excerpt` text NOT NULL,
`featured_media` blob,
`content` mediumtext NOT NULL,
`category` varchar(255) NOT NULL,
PRIMARY KEY (`id`),
KEY post_id (`id`),
FOREIGN KEY (author)
REFERENCES users(id)
ON DELETE NO ACTION ON UPDATE NO ACTION
) ENGINE=InnoDB CHARSET=latin1 auto_increment=1;
insert into users VALUE (
'1','username','UserAuthor','AuthorFirstName','AuthorLastName','author@authoremail.com','test12345');
insert into posts (title,author,date,excerpt,featured_media,content,category) VALUE (
'First Post',
'1',
'2019-1-18 05:30:50',
'This is just an excerpt of the full text below',
NULL,
'This is just an excerpt of the full text below. This is below. This is the full text. Fancy, isn't it?',
'shitpost'
);
编辑:稍后编辑 - 我更感兴趣的是看看像 reddit 这样的公司是如何真正做到这一点的。您仍然可以查看已删除帐户的用户的评论。那么从这个意义上说,这是如何实现的呢?我确信必须使用外键来链接包含用户及其评论/帖子的信息的表。我还看到另一个选择可能是有另一个列来显示用户是否处于事件状态或非事件状态。但接下来的问题就变成了——这在 java 应用程序的上下文中如何工作?如果发送删除,标志将更改为“Y”...?
最佳答案
如果您确实想保留帖子而不包含任何有关作者的信息(例如,多个帖子是由同一前用户撰写的),请尝试:
FOREIGN KEY (author)
REFERENCES users(id)
ON DELETE SET NULL ON UPDATE NO ACTION
根据Using FOREIGN KEY Constraints
就我个人而言,我倾向于保留用户记录,将其匿名并将其标记为不活动。
how would this work in the context of a java application?
那么,您的删除方法将发出 UPDATE
SQL 命令,而不是 DELETE
。
关于MySQL/Spring : Cannot delete or update a parent row a foreign key constraint fails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58519328/
仍在习惯正则表达式中的环视,但似乎无法理解 \b(?>! key)foreign\b 要成为正确的解决方案?我试图在某些文本中找到所有外来词的实例,但不是外键或外键。 最佳答案 前瞻需要在 forei
我有一个外国表,例如: CREATE FOREIGN TABLE film ( id varchar(40) NOT NULL, title varcha
我的意思是例如我可以创建表 create table XTable ( idt int not null primary key, value nvarchar(50), idq int,
我有以下表格: 财务: PK_FinancialID FK_SchoolID 学校: PK_SchoolID 类: PK_ClassID FK_SchoolID 类(class)名 Class 和 F
我有一个旧数据库,我不能用每个实体中具有外键属性的两个实体更改它: EntityOne ForeignKey1 (pointing to EntityTwo.ForeignKey2) Enti
当我尝试运行代码时,出现此错误 Cannot add or update a child row: a foreign key constraint fails (hotel_info.results
好的,我尝试了这种从外国翻译过来的方法,它确实有效我在我的库中的 structs.lisp 文件中定义了这些,它在我所有其他依赖项之前首先加载 (cffi:defcstruct (cv-size :c
我有一个 Django 程序员的问题应该很简单,但目前我不知道如何解决。 我有这三个模型(我尽量简化): class Nations(models.Model): label = models
真的很讨厌占用别人的时间,但问题似乎并没有消失。 我考虑了 http://verysimple.com/2006/10/22/mysql-error-number-1005-cant-create-t
我需要一双新的眼睛来看看我到底做错了什么。 CREATE TABLE IF NOT EXISTS `spring_normalize`.`users` ( `username` VARCHAR(6
我正在尝试在表中添加外键约束。我的表结构是:表请购单 我想在下一张表中添加申请表的外键 申请批准 当我尝试使用以下 SQL 查询添加外键约束时: ALTER TABLE `requisition_ap
每当我尝试将数据插入“学生”表时,都会收到此错误。下面是两个表,我使用的是MySql: 学生表: | Field | Type | Null | Key | Defaul
我收到错误代码 1215:无法为子表添加外键约束。父表具有复合主键。我想使用该复合主键作为子表中的外键。请指导我。 父表 CREATE TABLE health.procedures( Spe
var state = require('./state') module.exports = function (sequelize, DataTypes) { var city = seq
我可以通过 this case 部分解决这个问题 不幸的是,Preload() 函数似乎无法在相关对象集中进行更深入的研究。 澄清一下,我有以下模型: type Room struct {
我正在使用 Laravel 6。我创建了一些迁移,但我无法让它们成功运行。这些是我的迁移。 public function up() { Schema::create('nationa
这是我的总输出: Executing SQL script in server ERROR: Error 1215: Cannot add foreign key constraint CREATE
我有 postgres 数据库,我的应用程序是使用 django 构建的,我使用 south migration 来维护数据库模式。我有以下场景: user_table与userclickstream
简单的问题。只是想知道是否可以在不需要我在 Java 代码中手动强制执行此约束的情况下完成此操作。这两个外键(一起在同一个表中)都引用另一个表,但对于每一行,它们不得指向同一个外项。 link tex
我正在为我的模型关联使用 Sails 和 Waterline,但我不确定要做什么才能修复我在尝试更新 PageChild 对象时收到的错误。 module.exports = { tableN
我是一名优秀的程序员,十分优秀!