【问题标题】:How to implement the schema.prisma @reference(fields:...) in MySQL?如何在 MySQL 中实现 schema.prisma @reference(fields:...)?
【发布时间】: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
);

【问题讨论】:

    标签: mysql schema graphql-js prisma prisma-graphql


    【解决方案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”不兼容。
    猜你喜欢
    • 2021-01-31
    • 1970-01-01
    • 2016-11-29
    • 2016-03-27
    • 1970-01-01
    • 2021-07-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多