小编car*_*ara的帖子

SQLite3"忘记"使用外键

我正在使用带有SQLite3的Ruby,但我在Sqlite3中尝试使用外键却很不成功.根据sqlite3 --version,版本3.7.13已安装.据我所知,自3.6.x版以来,Sqlite3支持外键.

我知道默认情况下外键被禁用,必须激活PRAGMA foreign_keys = ON;.在我的Ruby db-create-script中,我正在做这样的事情:

sql = <<-SQL
  PRAGMA foreign_keys = ON;
  CREATE TABLE apps (
    id ....
  );
  CREATE TABLE requests (
    ...
    app_id INTEGER NOT NULL,
    FOREIGN KEY(app_id) REFERENCES apps(id),
  );
  ...
SQL
db.execute_batch(sql)
Run Code Online (Sandbox Code Playgroud)

不幸的是,我可以愉快地requests使用未知的app-id 插入行,它可以工作,但当然不应该.

有意思:直接使用sqlite3 shell,我可以观察到以下行为:

$ sqlite3 database.db
sqlite> PRAGMA foreign_keys = ON;
sqlite> PRAGMA foreign_keys;
1 // as expected
sqlite> .quit
$ sqlite3 database.db
sqlite> PRAGMA foreign_keys;
0 // off ?!
Run Code Online (Sandbox Code Playgroud)

在不退出sqlite3 shell的情况下,外键在激活它们之后正在工作(而不是退出shell),我不允许 …

ruby sql sqlite raspbian

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

UML元模型:派生,派生联合和子集

如果你曾经使用过UML的元模型,你可以理解联合和子集的概念 - 据我所知:

  • 标记为" 派生联合 " 的元素/类的属性和关联不能直接使用.在更具体的子类中,您可以找到可以使用的子集,只要它们本身没有标记为派生联合.
  • " derived "(没有union)属性和关联在更具体的类中也有子集,但与上面不同,您可以直接使用它们而无需在更具体的类中查找子集

我的问题:

  1. 这有意义还是我在错误的轨道上?
  2. 你可以在一些属性/关联前面找到"/"(斜杠)的含义是什么,它们在子类中有子集?例如/ general:分类器[*]

uml metaclass metamodel

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

覆盖派生的 Ecore 类 (EMF) 中的属性值

我知道这样一个事实,即在涉及继承时,我无法在基于 ecore 的模型中整体覆盖或重新定义属性。但是我可以以某种方式为现有的继承属性分配一个新值吗?

例如,A 类定义了一个字符串的属性名称,默认值设置为'defaultA'。B 类继承自 A 类,名称应具有值“defaultB”。

我试图在 B 类中重新实现具有相同名称和数据类型的属性,但我无法从中创建 genmodel(“可能没有两个名为 'name' 的特征”)。

甚至无法更改继承属性的值吗?

eclipse modeling eclipse-emf emf ecore

5
推荐指数
1
解决办法
2270
查看次数

标签 统计

eclipse ×1

eclipse-emf ×1

ecore ×1

emf ×1

metaclass ×1

metamodel ×1

modeling ×1

raspbian ×1

ruby ×1

sql ×1

sqlite ×1

uml ×1