В моей базе данных есть две таблицы: продукты и document_products, которые имеют ForeignKey для продуктов, во время использования приложения пользователь может удалить все элементы из таблицы продуктов, но мне все равно нужно сохранять элементы в document_products, но RESTRICT, кажется, не работает, как даже с ним я получаю:
Ограничение FOREIGN KEY не выполнено (код 1811 SQLITE_CONSTRAINT_TRIGGER)
Мой объект DocumentProduct выглядит следующим образом:
Код: Выделить всё
@JsonClass(generateAdapter = true)
@Entity(
tableName = "document_products",
foreignKeys = [
ForeignKey(
entity = Document::class,
parentColumns = ["id"],
childColumns = ["documentId"],
onDelete = CASCADE
),
ForeignKey(
entity = Product::class,
parentColumns = ["products_id"],
childColumns = ["document_products_productIdMap"],
onDelete = RESTRICT
)
],
indices = [Index("document_products_productIdMap"), Index("documentId"), Index(
value = ["document_products_productIdMap", "documentId", "labelType"],
unique = true
)]
)
data class DocumentProduct(
@PrimaryKey(autoGenerate = true)
@ColumnInfo(name = "document_products_id")
var id: Long,
@ColumnInfo(name = "document_products_productIdMap")
var productId: String,
@ColumnInfo(name = "document_products_quantity")
var quantity: Float,
var orderQuantity: Float,
@ColumnInfo(name = "document_products_purchase")
var purchase: Float,
var documentId: Long,
var labelType: String?,
var timestamp: Long?
)
Код: Выделить всё
@Entity(tableName = "products")
open class Product(
@PrimaryKey(autoGenerate = false)
@ColumnInfo(name = "products_id")
open var id: String,
open var description: String?,
@ColumnInfo(defaultValue = "PZ")
open var unitOfMeasure: String,
@ColumnInfo(name = "products_purchase")
open var purchase: Float,
open var price: Float,
@ColumnInfo(name = "products_quantity")
open var quantity: Float
)
Код: Выделить всё
@Query("DELETE FROM products")
suspend fun deleteAll(): Int
Подробнее здесь: https://stackoverflow.com/questions/750 ... ct-in-room
Мобильная версия