如何在 MySQL 中实现 schema.prisma @reference(fields:...)?
Posted
技术标签:
【中文标题】如何在 MySQL 中实现 schema.prisma @reference(fields:...)?【英文标题】:How to implement the schema.prisma @reference(fields:...) in MySQL? 【发布时间】:2020-11-15 22:16:30 【问题描述】:在下面的 schema.prisma 中,模型链接和用户之间的关系是用postedBy User? @relation(fields: [postedById], reference: [id])
创建的。如何在 mysql 中实现这一点?
类型为 User 的字段 postedBy 应通过 User.id 字段链接到 User。由于 Link.postedBy 和 User.id 属于不同的数据类型,因此 Link.postedById 字段链接到 User.id。现在,postedBy 需要连接到 postedById。
我试图用 Link 中的两个 FOREIGN KEY 来解决这个问题。第一个链接postedBy 和postedById,第二个链接postedById 和User.id。这不起作用。
非常感谢任何帮助。
model Link
id Int @id @default(autoincrement())
createdAt DateTime @default(now())
description String
url String
postedBy User? @relation(fields: [postedById], references: [id])
postedById Int?
model User
id Int @id @default(autoincrement())
name String
email String @unique
password String
links Link[]
这些是我为获取架构结构而创建的 MySQL 查询:
CREATE TABLE User (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(128),
email VARCHAR(128) UNIQUE,
password VARCHAR(128),
links VARCHAR(256),
CONSTRAINT Link FOREIGN KEY (id) REFERENCES Link(id)
);
CREATE TABLE Link (
id INT AUTO_INCREMENT PRIMARY KEY,
createdAt DATETIME DEFAULT CURRENT_TIMESTAMP(),
description VARCHAR(256),
url VARCHAR(256),
postedBy VARCHAR(128),
postedById INT,
CONSTRAINT author FOREIGN KEY (postedBy) REFERENCES Link(postedById),
FOREIGN KEY (postedById) REFERENCES UserId
);
【问题讨论】:
【参考方案1】:编辑:
CREATE TABLE User (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(128),
email VARCHAR(128) UNIQUE,
password VARCHAR(128)
);
CREATE TABLE Link (
id INT AUTO_INCREMENT PRIMARY KEY,
createdAt DATETIME DEFAULT CURRENT_TIMESTAMP(),
description VARCHAR(256),
url VARCHAR(256),
postedById INT not null,
FOREIGN KEY (postedById) REFERENCES User(id)
);
这应该可以工作
【讨论】:
也许我不清楚。我想知道如何根据架构创建 MySQL 查询。我修改了我创建的查询。他们抛出错误:错误 3780 (HY000):在外键约束“作者”中引用列“postedBy”和引用列“postedById”不兼容。以上是关于如何在 MySQL 中实现 schema.prisma @reference(fields:...)?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 MySQL 中实现 schema.prisma @reference(fields:...)?
如何使用 Java Spring 在 MySql 中实现多租户 [关闭]
如何使用 Laravel 5.6 在 Laravel Eloquent 中实现嵌套 MySQL 查询